Ошибка пространства PermGen - PullRequest
       9

Ошибка пространства PermGen

0 голосов
/ 20 февраля 2012

Я развернул очень большое приложение, и когда я попытался запустить сервер, он выдал

«Ошибка нехватки памяти»: пространство PermGen

СЯ использую Tomcat 5.5, у меня нет "setenv.bat" внутри папки bin.Поэтому я установил JAVA_OPTS, который находится в "catalina.bat".Я дал как.

set JAVA_OPTS=-server -Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m -XX:NewSize=192m -XX:MaxNewSize=384m -Djava.awt.headless=true -Dhttp.agent=Sakai -Dorg.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false -Dsun.lang.ClassLoader.allowArraySyntax=true

Но все же проблема существует.Есть ли что-то, что мне нужно указать или нужно изменить в приведенном выше фрагменте, чтобы мой сервер работал.

Спасибо, Jeyaa.

Ответы [ 4 ]

0 голосов
/ 26 ноября 2012

Поскольку вы развертываете Sakai, эти JAVA_OPTS должны быть всем, что вам нужно для небольшой установки, так как они используются мной в течение ряда лет:

-server -XX: + UseParallelGC -Xmx1024m -XX: PermSize = 512 м1003 *

Обратите внимание, что для решения вашей конкретной проблемы вам нужно увеличить параметры PermSize.

0 голосов
/ 20 февраля 2012

Я рекомендую вам использовать инструмент JVisualVM, который включен в дистрибутив HotSpot Java, чтобы проверить размер пространства PermGen и посмотреть статистику GC

0 голосов
/ 20 февраля 2012

Попробуйте удвоить MaxPermSize с -XX:MaxPermSize=1024m.Если проблема сохраняется, попробуйте также включить дамп кучи на OutOfMemoryError с флагом -XX:+HeapDumpOnOutOfMemoryError, а затем откройте дамп памяти с помощью Eclipse Memory Analyzer , чтобы выяснить, что занимает всю эту память.Сброс памяти занимает много времени, так что наберитесь терпения.Возможно, у вас есть утечка, которую необходимо устранить.Например, бесконечно генерируемые классы или множество строк * intern 'ed.

Когда-то у меня была утечка памяти, потому что я создал регистраторы Log4J из динамически генерируемых строк, и оказалось, что Log4J интернировал все этистроки.Это означало, что наша программа потерпела крах с OOM в пространстве PermGen после запуска в течение 3 дней.Не хорошо.

0 голосов
/ 20 февраля 2012

Лучше всего, если вы используете Sun JVM, это загрузить Visual VM 1.3.3 и установить все плагины. Это позволит вам видеть темы, память и т. Д.

Сначала запустите Visual VM, затем запустите Tomcat, выбрав его JRE в Visual VM. Тогда вы сможете увидеть, что происходит.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...