Настройка памяти Tomcat JVM

Я использую tomcat7 и параметры памяти jvm установлены на

-Xms2048m -Xmx2048m 
-XX:NewSize=256m -XX:MaxNewSize=256m 
-XX:PermSize=256m -XX:MaxPermSize=256m 

с этими настройками сервер не запустился с ошибкой

Error occurred during initialization of VM
Too small initial heap for new size specified

То же самое, даже если я увеличу NewSize до 512 или 1024, это сработает, только если я удалю параметр NewSize. Размер кучи 2048 МБ, допустимы ли эти размеры?


person Manoj    schedule 24.10.2013    source источник


Ответы (2)


Удалите параметры NewSize, а затем отслеживайте занятость YoungGen во время запуска вашего приложения. В зависимости от размера YoungGen вы можете вернуться и изменить параметры на оптимальное значение.

Используйте, например. gc logging и/или jstat, чтобы увидеть занятость каждого региона в куче.

Кроме того, убедитесь, что ваши параметры правильно анализируются виртуальной машиной, например. вместо 256 МБ YoungGen JVM может подумать, что вам нужно 256 Б.

person Aleš    schedule 05.11.2013

У меня 4 Гб ОЗУ 64 бит. Я тоже получил ту же ошибку, но исправил с этой конфигурацией. установить JAVA_OPTS=%JAVA_OPTS%-Xms2560m

set JAVA_OPTS=%JAVA_OPTS% -Xmx2560m
set JAVA_OPTS=%JAVA_OPTS% -XX:NewSize=1280m
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxNewSize=1280m
set JAVA_OPTS=%JAVA_OPTS% -XX:PermSize=400m
set JAVA_OPTS=%JAVA_OPTS% -XX:MaxPermSize=400m
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseCompressedOops
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseParNewGC
set JAVA_OPTS=%JAVA_OPTS% -XX:+DisableExplicitGC
set JAVA_OPTS=%JAVA_OPTS% -XX:+UseConcMarkSweepGC
set JAVA_OPTS=%JAVA_OPTS% -XX:SurvivorRatio=6
set JAVA_OPTS=%JAVA_OPTS% -XX:+CMSClassUnloadingEnabled
set JAVA_OPTS=%JAVA_OPTS% -Dsun.rmi.dgc.client.gcInterval=3600000
set JAVA_OPTS=%JAVA_OPTS% -Dsun.rmi.dgc.server.gcInterval=3600000
person Ravi    schedule 18.02.2016