web-dev-qa-db-ja.com

Java --OutOfMemoryError:PermGenスペース

私は現在、自分も作成したWebサイトにアクセスするだけで、任意のウェアから統計を取得できるツールを開発しています。

知らない人のために、Birtはレポートツールであり、Eclipseプラグインです。

私の問題は次のとおりです。

WebサイトをホストしているサーバーにTomcatをインストールし、Birt ReportEngineをインストールしました。また、Webサイトで、オンラインビューアを呼び出してレポートを取得します。

問題は、昨日からレポートを起動すると、次のエラーが発生することです。

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 Webサイトに関しては、Eclipseを使用しておらず、有用な投稿は見つかりませんでした。

誰かが私を助けてくれますか?

ありがとう

13
Nugget

トーマスが言ったように、設定するパラメータは-XX:MaxPermSizeです。 Tomcatにこのパラメーターを設定する1つの方法は、CATALINA_OPTS環境変数を使用することです。

Windowsの場合:

set CATALINA_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m

Linux(bash)の場合:

export CATALINA_OPTS="-Xms512m -Xmx512m -XX:MaxPermSize=256m"

Tomcat/binディレクトリにあるstartup.batおよびcatalina.batまたはstartup.shおよびcatalina.shファイルを確認してくださいそこに上記のコマンドを追加します。

(XmxパラメーターとXmsパラメーターは、Javaヒープ-オブジェクトが格納される場所です。これは問題ではありませんが、完全を期すために含めました。)の最小サイズと最大サイズを設定します。

16
Pierre Henry

Eclipse.iniに次の行を追加する必要はありません

-XX:MaxPermSize=128m

問題が再度発生する場合は、値を増やしてみてください。次のオプションの行を追加することもできます。

-XX:+UseConcMarkSweepGC
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
-XX:+UseParNewGC 

これにより、JVMのガベージコレクターがより最適化されたものに変更され、パフォーマンスとメモリ使用量も向上します。

-XmxおよびXmsオプションの値を微調整することもできます。 JVMのメモリフットプリントが増加するため、少し増やしてみてください(-XX:MaxPermSizeと同じ)。

詳細については、こちらを参照してください: http://www.eclipsezone.com/Eclipse/forums/t61618.html

JVMパラメータとオプションの完全なリストについては: http://www.Oracle.com/technetwork/Java/javase/tech/vmoptions-jsp-140102.html

6

そのJVMオプションを使用します:-XX:MaxPermSize=256m(もちろん、メモリの量は自由に選択できますが、IIRCのデフォルトは64mなので、それを増やす必要があります)。 -これはOracleのJVM(以前のSunの:))用であることに注意してください。他のJVMには異なるオプションがある場合があります。

それ以外は、ホットデプロイをやりすぎないようにしてください。これにより、PermGenのスペース使用量も増える可能性があります(Tomcatを含むJBossには問題がありますが、スタンドアロンのTomcatに当てはまるかどうかはわかりません)。

4
Thomas

これは、より多くのヒープメモリを割り当てることで解決できます。これは次のように実行できます。手順:Eclipseサーバーをダブルクリック->起動構成を開く->引数->この行をvm引数のテキスト領域に貼り付ける:-

-XX:MaxPermSize = 512M -Xmx1024Mこれにより、メモリ不足エラーが解決されます。

2
satish kumar

以下の行を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
1
Thinakaran