19

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
4

3 に答える 3

41

より有用な解決策は、JAVA_OPTS変数の値を増やすことです。ディレクトリ内のファイルに
次の行を追加しますCatalina.bat/Catalina.shbin

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"  

この記事で見つけることができるより多くの解決策

于 2013-03-20T12:36:24.317 に答える
12

再デプロイ後、ガベージ コレクターが 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/

アップデート

他の解決策はおそらくここにあります:Tomcat PermGenスペースをどうするか

-XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC を javaVM オプションに追加します。

于 2013-03-20T12:42:17.143 に答える
1

「値」が 256m のような文字列である JAVA_OPTS 変数を使用-XX:PermSize={value}して permgen の値を微調整します。-XX:MaxPermSize={value}

于 2013-03-20T12:29:35.620 に答える