PermGenを128M以上に設定すると、Sun JVMの初期化に失敗するのはなぜですか?
質問
PermGenを増やす必要があります。現在、コマンドラインパラメーターとして次を渡します。
-XX:PermSize = 128m
-XX:MaxPermSize = 128m
これは動作します。ただし、値を大きくしようとすると、JVMの初期化に失敗し、次のエラーが表示されます。
[2009-06-18 01:39:44] [情報] VMの初期化中にエラーが発生しました
[2009-06-18 01:39:44] [情報]オブジェクトヒープに十分なスペースを予約できませんでした
[2009-06-18 01:39:44] [情報]
[2009-06-18 01:39:44] [395 javajni.c] [エラー] CreateJavaVMが失敗しました
具体的には、同梱の JRE6 で Tomcat を起動しようとしていますが、これは重要ではないと思います。
編集: 2GBのRAMでWin2k3 VMイメージを実行しています。次のパラメーターを指定して Tomcatを監視アプリケーションを使用してJVMを起動します。
初期メモリプール: 1024 、最大メモリプール: 1536
-XX:PermSize = 128m
-XX:MaxPermSize = 128m
-XX:+ CMSPermGenSweepingEnabled
-XX:+ CMSClassUnloadingEnabled
-XX:+ UseConcMarkSweepGC
-Dcatalina.home = C:\ Program Files \ Apache Software Foundation \ Tomcat 6.0
-Dcatalina.base = C:\ Program Files \ Apache Software Foundation \ Tomcat 6.0
-Djava.endorsed.dirs = C:\ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ endorsed
-Djava.io.tmpdir = E:\ tomcat \ temp
-Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file = C:\ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ conf \ logging.properties
解決
Perm Genはヒープに追加されるため、プロセスを確認してください。1.5GB以上の2Gが利用可能である必要があります。
他のヒント
-Xmx512mでより大きなヒープを与えてみてください(これにより512 MBが得られます)
他にどのようなメモリパラメータを使用していますか?マシンにはどれくらいのメモリがありますか? 32ビットまたは64ビットのマシンを使用していますか?
2GBのメモリがあり、設定-Xmx1024m -XX:PermSize = 512m -XX:MaxPermSize = 512mでtomcatを実行します。これは通常正常に動作します。