-->

部署的Tomcat 7时出现PermGen space错误? [重复](PermGen Spac

2019-07-22 03:21发布

这个问题已经在这里有一个答案:

  • 在Tomcat中PermGen space的错误 11个回答

我安装了Tomcat 7升级我的JIRA projeect版本从5.0至6后,我把tomcat中的webapps项目文件夹。 我运行这个本地主机:很长一段时间的运行后,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

Answer 1:

更有帮助的解决方案是增加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"  

更多的解决方案,您可以在此找到中的文章



Answer 2:

重新部署之后,有时候垃圾收集器不能破坏在Tomcat一些对象和运行的空间。 有很多原因,这些情况:

  • 如果你使用一些CRUD的对象 - 检查是否存在使用后全部关闭。
  • 如果您的应用程序使用的其他库 - 有时对象从这些库也不能被破坏,像MysqlConnector,休眠/ 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空间做

添加-XX:+ CMSClassUnloadingEnabled -XX:+ UseConcMarkSweepGC到JavaVM的选项



Answer 3:

调整使用的PermGen的值-XX:PermSize={value}-XX:MaxPermSize={value}经由JAVA_OPTS变量,其中“值”是像256米一个字符串。



文章来源: PermGen Space error when deploying tomcat 7? [duplicate]