Java - OutOfMemoryError: пространство PermGen - PullRequest
13 голосов
/ 27 июля 2011

В настоящее время я разрабатываю инструмент, позволяющий мне получать статистику от любого программного обеспечения, просто зайдя на созданный мной веб-сайт.

Для тех, кто не знает, Birt - инструмент отчетности и плагин Eclipse.

Моя проблема заключается в следующем:

Я установил tomcat на сервер, на котором размещен мой веб-сайт, и установил на нем Birt ReportEngine, а на своем веб-сайте я вызываю интерактивную программу просмотра для получения моих отчетов.

Проблема в том, что со вчерашнего дня, когда я запускаю отчет, у меня появляется эта ошибка:

javax.servlet.ServletException: L'exécution de la servlet a lancé une exception
    org.eclipse.birt.report.filter.ViewerFilter.doFilter(ViewerFilter.java:68)

Причина:

java.lang.OutOfMemoryError: PermGen space

Я действительно не знаю, какой файл конфигурации нужно изменить, чтобы избежать этой ошибки. В Интернете я нашел несколько примеров, в которых говорится об изменении файла eclipse.ini, но что касается веб-сайта mty, я не использую eclipse, я не нашел ни одного полезного сообщения.

Может кто-нибудь помочь мне, пожалуйста?

Спасибо

Ответы [ 5 ]

16 голосов
/ 27 июля 2011

Как сказал Томас, параметр для установки равен -XX:MaxPermSize. Одним из способов установки этого параметра для Tomcat является использование переменной окружения CATALINA_OPTS.

Для Windows:

set CATALINA_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m

Для Linux (bash):

export CATALINA_OPTS="-Xms512m -Xmx512m -XX:MaxPermSize=256m"

Проверьте файлы startup.bat и catalina.bat или startup.sh и catalina.sh в каталоге tomcat / bin и добавьте туда приведенные выше команды.

(Параметры Xmx и Xms устанавливают минимальный и максимальный размер кучи Java - места, где хранятся объекты. Это не проблема, которую вы имеете, но я включил их для полноты.)

6 голосов
/ 27 июля 2011

Вам не нужно добавлять следующую строку в eclipse.ini

-XX:MaxPermSize=128m

Если проблема повторяется, попробуйте увеличить значение.Вы также можете добавить следующие необязательные строки:

-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseParNewGC 

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

Вы можететакже хотите настроить значения параметров -Xmx и Xms.Попробуйте небольшое увеличение (то же самое до -XX:MaxPermSize), так как это увеличит объем используемой памяти вашей JVM.

Более подробные сведения см. Здесь: http://www.eclipsezone.com/eclipse/forums/t61618.html

Полный списокпараметры и параметры JVM: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

4 голосов
/ 27 июля 2011

Используйте эту опцию JVM: -XX:MaxPermSize=256m (конечно, вы можете выбрать объем памяти, но IIRC по умолчанию будет 64 м, так что вам придется увеличить его). - Обратите внимание, что это для Oracle JVM (ранее SUN :)), другие JVM могут иметь другие варианты.

Кроме этого, попробуйте не слишком много горячего развертывания, так как это может также увеличить использование пространства PermGen (JBoss, который включает в себя Tomcat, имеет эту проблему, но я не уверен, верно ли это для автономного Tomcat).

2 голосов
/ 02 августа 2011

Эту проблему можно решить, выделив больше памяти кучи.это можно сделать следующим образом: шаги: дважды щелкните по вашему серверу затмений-> открыть конфигурацию запуска-> аргументы-> вставить эту строку в текстовую область аргументов vm: -

-XX: MaxPermSize = 512M -Xmx1024M Это будетрешить вашу ошибку из вне.

1 голос
/ 13 августа 2013

Я добавил нижнюю строку в eclipse.ini, и у меня все работает нормально.

-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256m
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-XX:MaxPermSize=256m
...