2011-07-27 11 views
13

私は現在、私が作成したウェブサイトに行くだけでanywareから統計を得ることができるツールを開発中です。Java - OutOfMemoryError:PermGen space

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

私の問題は以下の通りです:

は、私は私のウェブサイトをホスティングしているサーバにTomcatをインストールし、その上にバートのReportEngineをインストールし、そして私のウェブサイト上で、私は私のレポートを取得するためにオンラインビューアーを呼び出します。

問題は、私はレポートを起動すると昨日から、私はこのエラーを持っていることです。

によって引き起こさ
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ウェブサイトについては、私はEclipseを使用していません。有用な投稿は見つかりませんでした。

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

おかげJVMオプション

答えて

16

Thomasが述べたように、設定するパラメータは-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.batcatalina.batまたはstartup.shcatalina.shファイルをチェックし、そこに上記のコマンドを追加してください。

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

+0

助けてくれてありがとう、今日の午後に試してみて、結果についてお知らせします:) –

+0

よく:)ありがとう! –

+2

知っておいて欲しいこと:Java 8では、PermGenスペースがないため、この問題は消えます:) –

4

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

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

+0

私はいつも「OracleのVM」の上につまずくだろう...彼らは、太陽からそれを買って以来。 – Daniel

+0

@ダニエル、はい、私は "太陽のJVM"を書こうとしていましたが、私は思い出しました... :) – Thomas

6

あなたが必要eclipse.iniに次の行を追加しないでください。

-XX:MaxPermSize=128m 

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

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

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

-XmxXmsオプションの値を調整することもできます。少し増やしてみてください(-XX:MaxPermSizeと同じ)ので、JVMのメモリ使用量が増えます。 JVMパラメータとオプションの完全なリストについては http://www.eclipsezone.com/eclipse/forums/t61618.html

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

2

これは、より多くのヒープメモリを割り当てることによって解決することができる多くのための

は、詳細はこちらをご覧説明しました。 これはと行うことができます。サーバ - >オープン打ち上げ設定 - > Arguments-> VM引数のテキスト領域に次の行を貼り付け、あなたの日食に ダブルクリック: 手順 -

-XX:MaxPermSizeを= 512M -Xmx1024M これはあなたのoutofmemoryエラーを解決します。

1

次の行を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 
関連する問題