Наше приложение Java (которое мы хотим сохранить совместимым с 32-разрядными компьютерами с Windows, следовательно, с использованием 32-разрядной JRE) требует много памяти, и мы хотели бы предоставить ему максимально доступную память при запуске JRE (с использованием параметра Xmx).
Хотя теоретически 32-битные системы дают 4 Гбайт выделяемой памяти, мы поняли, что, учитывая управление памятью Windows, оно более ограничено самым большим непрерывным доступным блоком памяти. Небольшое тестирование показало, что значение 1024 МБ, скорее всего, будет работать на большинстве компьютеров.
Сейчас мы изучаем лучший подход для выделения самой большой памяти кучи, доступной при запуске приложения: есть ли какой-либо подход, кроме метода пробной ошибки (например, запустить JRE с 4 ГБ, а затем уменьшать, пока он не сработает )?
Кроме того, мы запускаем наше приложение с помощью Launch4J: предоставит ли это дополнительные параметры для определения максимально возможной памяти кучи?
-Xmx
и продолжить, если процесс завершится с кодом ошибки. Имейте в виду, что если вы выделите максимальный объем памяти, в ОС закончится виртуальная память, которая вам может не понадобиться. Обратите внимание: максимальный объем памяти, доступной для выделения, зависит от максимального непрерывного блока виртуальной памяти. - person bestsss   schedule 02.11.2014