Ошибка PermGen Space при развертывании tomcat 7?

Я установил tomcat 7, чтобы обновить версию моего проекта JIRA с 5.0 до 6. После того, как я поместил папку проекта в веб-приложения tomcat. Я запускаю этот localhost: 8080/jira после долгой работы, он выдает какое-то сообщение об ошибке. Пожалуйста, помогите нам решить эту проблему заранее спасибо

java.lang.RuntimeException: PermGen space
    at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:54)
    at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$2.run(AsynchronousAbleEventDispatcher.java:66)
    at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1.execute(AsynchronousAbleEventDispatcher.java:32)
    at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:60)
    at com.atlassian.event.internal.EventPublisherImpl.invokeListeners(EventPublisherImpl.java:160)
    at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:79)
    at com.atlassian.plugin.event.impl.DefaultPluginEventManager.broadcast(DefaultPluginEventManager.java:84)
    at com.atlassian.plugin.manager.DefaultPluginManager.addPlugins(DefaultPluginManager.java:768)
    at com.atlassian.plugin.manager.DefaultPluginManager.init(DefaultPluginManager.java:200)
    at com.atlassian.jira.plugin.JiraPluginManager.start(JiraPluginManager.java:63)
    at com.atlassian.jira.ComponentManager$PluginSystem.start(ComponentManager.java:635)
    at com.atlassian.jira.ComponentManager.startJIRA(ComponentManager.java:214)
    at com.atlassian.jira.ComponentManager.quickStart(ComponentManager.java:208)
    at com.atlassian.jira.ComponentManager.start(ComponentManager.java:193)
    at com.atlassian.jira.upgrade.PluginSystemLauncher.start(PluginSystemLauncher.java:23)
    at com.atlassian.jira.startup.DefaultJiraLauncher$3.run(DefaultJiraLauncher.java:107)
    at com.atlassian.jira.config.database.DatabaseConfigurationManagerImpl.doNowOrEnqueue(DatabaseConfigurationManagerImpl.java:323)
    at com.atlassian.jira.config.database.DatabaseConfigurationManagerImpl.doNowOrWhenDatabaseActivated(DatabaseConfigurationManagerImpl.java:211)
    at com.atlassian.jira.startup.DefaultJiraLauncher.postDbLaunch(DefaultJiraLauncher.java:100)
    at com.atlassian.jira.startup.DefaultJiraLauncher.access$100(DefaultJiraLauncher.java:27)
    at com.atlassian.jira.startup.DefaultJiraLauncher$1.run(DefaultJiraLauncher.java:66)
    at com.atlassian.jira.util.devspeed.JiraDevSpeedTimer.run(JiraDevSpeedTimer.java:33)
    at com.atlassian.jira.startup.DefaultJiraLauncher.start(DefaultJiraLauncher.java:61)
    at com.atlassian.jira.startup.LauncherContextListener.contextInitialized(LauncherContextListener.java:54)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4797)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5291)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1637)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.OutOfMemoryError: PermGen space

person Maharajan    schedule 20.03.2013    source источник
comment
Взгляните на этот ответ о том, как для увеличения перманентного пространства. Хотя, возможно, это просто продлевает боль, если в основе лежит настоящий космический боров permgen...   -  person Anders R. Bystrup    schedule 20.03.2013
comment
мы устанавливаем CATALINA_OPTS = -Xms512m -Xmx1024m в переменной среды. А также увеличьте размер памяти в tomcat7w, который находится в папке bin tomcat 7. Пожалуйста, помогите мне, где мне нужно изменить память и как получить результат. Спасибо за поддержку :)   -  person Maharajan    schedule 20.03.2013


Ответы (3)


Более полезным решением является увеличение значений в переменной JAVA_OPTS.
Добавьте следующую строку в файл Catalina.bat/Catalina.sh в каталоге bin.

Для Windows (Catalina.bat)

set JAVA_OPTS="-Xms1024m -Xmx10246m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"  

Для Unix (Catalina.sh)

export JAVA_OPTS="-Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"  

Другие решения вы можете найти в этой статье.

person Ilya    schedule 20.03.2013
comment
Лучше установить эти экспорты в setenv.sh/.bat. - person user18428; 20.03.2013
comment
По вашей инструкции я изменил значения в файле catalina.bat. так не могли бы вы дать мне какой-либо другой способ преодолеть это? - person Maharajan; 20.03.2013
comment
все равно получаю ERROR: Bundle org.springframework.osgi.extender [7] EventDispatcher: Error during dispatch. (java.lang.OutOfMemoryError: PermGen space) - person Maharajan; 20.03.2013
comment
+1 за упоминание catalina.bat. - person Withheld; 22.10.2013

Иногда после повторного развертывания сборщик мусора не может уничтожить некоторые объекты на Tomcat и заканчивается место. Причин для таких случаев много:

  • Если вы используете какие-то CRUD-объекты - проверьте, не закрылись ли они после использования.
  • Если ваше приложение использует другие библиотеки — иногда объекты из этих библиотек также не могут быть уничтожены, например, MysqlConnector, Hibernate/C3p0 или другие — попробуйте поместить эти библиотеки в папку tomcat/lib

Проверьте Tomcat с помощью Java VisualVM и проверьте permGen после повторного развертывания.
Значение по умолчанию для пространства permGen часто также очень низкое, вы можете увеличить его с помощью следующего параметра javaVM

 -XX:PermSize=64M -XX:MaxPermSize=256m

Вы можете следовать этому руководству

http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/

ОБНОВИТЬ

здесь можно найти другое решение: что делать с пространством tomcat PermGen

добавьте -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC к параметрам javaVM

person Zelldon    schedule 20.03.2013
comment
После следуйте инструкциям в соответствии с вышеуказанным сайтом, и он выдает ту же ошибку. Я работаю на сервере Windows. Поэтому я изменил значения в файле catalina.bat. так может у плз дать мне любой способ преодолеть это? Примечание. Я работаю на сервере Windows. - person Maharajan; 20.03.2013
comment
все еще я получаю ОШИБКУ: пакет org.springframework.osgi.extender [7] EventDispatcher: ошибка во время отправки. (java.lang.OutOfMemoryError: пространство PermGen) - person Maharajan; 20.03.2013
comment
Вы проверили кучу и пространство permGen из tomcat после повторного развертывания с помощью JavaVisualVm? visualvm.java.net - person Zelldon; 20.03.2013
comment
мы работаем на нашей локальной машине - person Maharajan; 20.03.2013
comment
нет проблем... я также работаю на локальной машине и обнаружил проблему с java visual vm - person Zelldon; 20.03.2013
comment
У меня есть другое решение: -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC, найденное здесь: stackoverflow.com/questions/10085028/ - person Zelldon; 20.03.2013

Настройте значение permgen, используя -XX:PermSize={value} и -XX:MaxPermSize={value} через переменную JAVA_OPTS, где «значение» — это строка, например 256m.

person Deepak Bala    schedule 20.03.2013
comment
мы устанавливаем CATALINA_OPTS = -Xms512m -Xmx1024m в переменной среды. А также увеличьте размер памяти в tomcat7w, который находится в папке bin tomcat 7. Пожалуйста, помогите мне, где мне нужно изменить память и как получить результат. Спасибо за поддержку :) - person Maharajan; 20.03.2013