Как увеличить размер кучи Java программно - PullRequest
10 голосов
/ 15 января 2010

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

Ответы [ 5 ]

6 голосов
/ 15 января 2010

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

4 голосов
/ 15 января 2010

Нет такого стандартного API для этого.

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

Затем вы можете иметь три или четыре ссылки, каждая из которых указывает на одни и те же файлы, но с размерами кучи "Tiny", "Medium", "Large", "Gigantic".

2 голосов
/ 15 января 2010

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

См. Этот ТА вопрос для альтернатив развертывания.

2 голосов
/ 15 января 2010

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

Вы не сможете сделать это программно.

2 голосов
/ 15 января 2010

Смотрите этот пост об увеличении размера кучи Java:

увеличить размер кучи Java навсегда?

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

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

...