Почему моя Sun JVM не может инициализироваться, если я установил PermGen выше 128M?
Вопрос
Мне нужно увеличить свой PermGen. В настоящее время я передаю следующее в качестве параметров командной строки:
<код> -XX: PermSize = 128m -XX: MaxPermSize = 128m код>
Это работает. Однако, если я попытаюсь увеличить значения, моя JVM не сможет инициализироваться, и у меня появится эта ошибка:
[2009-06-18 01:39:44] [info] Произошла ошибка при инициализации ВМ
[2009-06-18 01:39:44] [info] Не удалось зарезервировать достаточно места для кучи объектов
[2009-06-18 01:39:44] [info]
[2009-06-18 01:39:44] [395 javajni.c] [ошибка] Ошибка CreateJavaVM
В частности, я пытаюсь загрузить Tomcat во включенную JRE6 , но я не думаю, что это должно иметь значение.
Изменить. Я использую образ виртуальной машины Win2k3 с 2 ГБ ОЗУ. Я загружаю JVM с помощью приложения Monitor Tomcat со следующими параметрами:
Начальный пул памяти: 1024 , максимальный пул памяти: 1536
<код> -XX: PermSize = 128m -XX: MaxPermSize = 128m -XX: + CMSPermGenSweepingEnabled -XX: + CMSClassUnloadingEnabled -XX: + UseConcMarkSweepGC -Dcatalina.home = C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 -Dcatalina.base = C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 -Djava.endorsed.dirs = C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ одобрен -Djava.io.tmpdir = E: \ Tomcat \ TEMP -Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file = C: \ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ conf \ logging.properties Код>
Решение
Perm Gen является дополнением к Heap, поэтому проверьте процессы - вам понадобится 1,5+ ГБ вашего 2G.
Другие советы
Попробуйте увеличить размер кучи с -Xmx512m (это даст 512 МБ)
Какие еще параметры памяти вы используете? Сколько памяти в вашей машине? Вы на 32-битной или 64-битной машине?
У меня есть 2 ГБ памяти и я запускаю tomcat с настройками -Xmx1024m -XX: PermSize = 512m -XX: MaxPermSize = 512m. Это обычно работает нормально.