2010-01-15 4 views
10

У меня есть приложение для работы с java для поиска файлов, и оно обычно достигает предела кучи по умолчанию довольно скоро. У меня не будет доступа ко всем системам, в которые он будет установлен, поэтому я хочу увеличить размер кучи JVM в самом приложении. Может кто-нибудь помочь мне, как я могу это сделать программно в моем приложенииКак увеличить размер кучи java программно

+2

Почему бы вам не выбрать добавочный стартовый скрипт (bat или sh) с определенными начальными параметрами для jvm (например, Xmx) и развернуть его вместе с самим приложением. –

+3

Какой смысл устанавливать лимит, если какое-либо приложение может просто поднять его по своему усмотрению? –

+0

вы не можете программным образом изменить ограничения памяти в запущенном приложении –

ответ

2

Посмотреть это сообщение об увеличении размера Java кучи:

increase the java heap size permanently?

Возможно также вы можете очистить какую-то часть вашего кода, чтобы уменьшить использование памяти.

С наилучшими пожеланиями

4

Там нет такого стандарта API, чтобы сделать так.

Я предлагаю вам использовать Java Web Start для вызова вашего приложения (может использоваться для локальных приложений в последнем Sun Java 6), поскольку он позволяет вам указывать значения для этого.

У вас может быть три или четыре ссылки, каждая из которых указывает на одни и те же файлы, но с размерами «Крошечный», «Средний», «Большой», «Гигантский».

2

Посмотрите на что-то вроде launch4j и рассмотрите возможность развертывания исполняемых файлов, где вы можете контролировать лимит, когда кто-то начинает запуск вашего приложения.

Вы не сможете произвести программный код.

2

Для настольных приложений я предлагаю предоставить пусковую установку, которая затем может указать желаемый размер памяти. В дополнение к настройке вашей JVM вы также можете предоставить значок, ассоциации файлов и т. Д.

См. Это SO question для вариантов развертывания.

6

Установка -Xmx на один концерт не означает, что JVM будет выделять столько памяти при запуске. JVM будет выделять только -Xms (плюс накладные расходы), пока не потребуется больше места для кучи. Вам нужно защитить своих пользователей от измельчения виртуальной памяти или отказавшего выделения памяти из ОС? Если нет, просто установите Xmx в большое значение. Обратите внимание, что Windows 32bit JVM часто игнорируют настройки Xmx, превышающие 1,2Gig, поэтому лучше не запрашивать больше, чем концерт или так, чтобы быть в безопасности.

+1

32-разрядные JVM не будут игнорировать большие максимальные размеры кучи, вместо этого они не запустится. Просто установите -mx1200m или аналогичный. (-mx работает так же хорошо, как -Xmx) –

Смежные вопросы