部署tomcat 7时出现PermGen Space错误?

我安装了tomcat 7,将我的JIRA项目版本从5.0升级到6.我将项目文件夹放在tomcat的webapps中。 我运行这个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 

更有用的解决方案是增加JAVA_OPTS变量中的值。
将下一行添加到bin目录中的Catalina.bat/Catalina.sh文件中

适用于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" 

您可以在本文中找到更多解决方案

有时在重新部署之后,垃圾收集器无法销毁Tomcat上的某些对象并且空间不足。 这些案例有很多原因:

  • 如果你使用一些CRUD-对象 – 检查使用后是否全部关闭。
  • 如果您的应用程序使用其他库 – 有时这些库中的对象也无法销毁,如MysqlConnector,Hibernate / C3p0或其他 – 尝试将这些库放在tomcat / lib文件夹中

使用“Java VisualVM”检查Tomcat,并在重新部署后检查permGen。
permGen Space的默认值通常也非常低,您可以使用以下javaVM参数来增加它们

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

您可以按照这些教程操作

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

UPDATE

其他解决方案可能在这里找到: 如何处理tomcat PermGen空间

add -XX:+ CMSClassUnloadingEnabled -XX:+ UseConcMarkSweepGC to javaVM options

使用-XX:PermSize={value}-XX:MaxPermSize={value}通过JAVA_OPTS变量调整permgen的值,其中’value’是256m的字符串。