web-dev-qa-db-ja.com

-XX:MaxPermSize -XX:PermSizeの有無

Java.lang.OutOfMemoryError:PermGen spaceエラーが発生し、-Xms以外のTomcat JVMパラメーターを確認しました。 -Xmxパラメーターも-XX:MaxPermSize=128mを指定します。プロファイリングを少し行った後、PermGenのスペースでガベージコレクションが発生していることがあります。

私の質問は:-XX:MaxPermSizeを増やす以外に、-XX:PermSizeも指定した場合の違いは何ですか?合計メモリはXmx + maxPermSizeとなることはわかっていますが、-XX:PermSizeが(である理由は他にもあります-XX:MaxPermSizeが指定されている場合、(not)ありますか?

これらのJVMパラメータの実際の使用経験がある場合は、共有してください。

追伸JVMはHotSpot 64ビットサーバーVM build 16.2-b04です

50
dimitrisli

-XX:PermSizeは、JVMの起動時に割り当てられる初期サイズを指定します。必要に応じて、JVMは-XX:MaxPermSizeまで割り当てます。

44
tobiasbayer

パフォーマンスチューニングを行う場合は、-XX:PermSize-XX:MaxPermSizeの両方を同じ値に設定してJVMの効率を高めることをお勧めします。

ここにいくつかの情報があります:

  1. x86およびAMD64プラットフォームでのラージページヒープのサポート
  2. 大容量メモリページのJavaサポート
  3. 永続世代サイズの設定

CMSGCを使用している場合は、-XX:+CMSClassUnloadingEnabledを指定してクラスのアンロードオプションを有効にすることもできます。 Java.lang.OutOfMemoryError: PermGen spaceの確率を下げるのに役立つかもしれません

7
szhem