9

私が実行している Java プロセスは、最初の 1 時間ほどは一貫して適切に実行されます。ただし、パフォーマンスは急速に低下します。プロファイリングを行ったところ、メタスペースのガベージ コレクションが時間のマークまでかなり頻繁に発生し、その後制御不能になったことがわかりました。

ここに画像の説明を入力

-XX:MaxMetaspaceSize オプションを使用して、これを修正できると確信しています。ただし、この動作が発生する理由について詳しく知りたいです。なぜガベージ コレクション アルゴリズムがこのように動作するのか想像できません。誰かがより良い修正について説明やアドバイスを持っていますか? ありがとう

4

1 に答える 1

8

設定を試すことができます-XX:MaxMetaspaceExpansion=0。これにより、メタスペースを拡大しようとする前に、完全な GC (動的に作成されたメソッド/クラス データの解放) が強制されます。さらにMaxMetaspaceFreeRatio、デフォルトよりも低い値に設定して、GC 後にメタスペース自体をさらに縮小することもできます。

他のメタスペース関連のオプションについては、この回答を参照してください。

メタスペース コレクション自体は、ガベージ コレクターによってアンロードされるクラスに依存しています。したがって、使用している GC によっては、ガベージをより早く再利用するように微調整することも役立つ場合があります。

于 2015-07-26T00:16:36.770 に答える