53

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

私の質問は次のとおりです。-XX:MaxPermSize私も指定した場合の違いは何-XX:PermSizeですか?合計メモリがXmx+maxPermSizeになることはわかっていますが、が指定されているときにそこにある-XX:PermSizeべきではない理由は他に-XX:MaxPermSizeありますか?

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

ps。JVMはHotSpot64ビットサーバーVMビルド16.2-b04です

4

3 に答える 3

47

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

于 2011-12-02T12:44:08.663 に答える
26

パラメータを as-XX:PermSize-Xms操作することで、アプリケーションの起動などのパフォーマンスを調整できます。私は最近それを見ていませんが、数年前のデフォルト値は-Xms32MBのようなものでした(私が思うに)、アプリケーションがそれ以上を必要とする場合、フィルメモリのサイクル数をトリガーします-フルガベージコレクション-必要なものがすべて読み込まれるまで、メモリなどを増やします。このサイクルは起動のパフォーマンスに悪影響を及ぼす可能性があるため、必要な番号をすぐに割り当てると起動が改善される可能性があります。

同様のサイクルが永久世代にも適用されます。そのため、これらのパラメーターを調整すると、(とりわけ) 起動を改善できます。

警告JVM には、メモリーの割り当て、-Xmsedenスペースと古い世代の分割などに関して、多くの最適化とインテリジェンスがあります。そのため、アプリケーションのパフォーマンスが向上するどころか低下します。-Xmx-XX:PermSize-XX:MaxPermSize

いつものように: 重要な測定を行って、変更によって実際に全体的なパフォーマンスが向上したことを証明します (たとえば、起動時間を改善すると、アプリケーションの使用中にパフォーマンスが大幅に低下する可能性があります)。

于 2011-12-02T14:59:21.063 に答える
8

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

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

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

-XX:+CMSClassUnloadingEnabledを使用している場合は、クラスのアンロード オプションを有効にするように指定することもできますCMS GC。の可能性を減らすのに役立つ場合があります。Java.lang.OutOfMemoryError: PermGen space

于 2011-12-02T16:15:40.160 に答える