Подтвердить что ты не робот

Java - OutOfMemoryError: пространство PermGen

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

Для тех, кто не знает, 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, я не нашел полезной почты.

Кто-нибудь может мне помочь?

Спасибо

4b9b3361

Ответ 1

Как сказал Томас, параметр для установки -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 - там хранятся объекты. Это не проблема, которую вы имеете, но я включил их для полноты.)

Ответ 2

Вам не нужно добавлять следующую строку в 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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

Я добавил следующую строку линии в 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