1. ホーム
  2. java

[解決済み】-XX:MaxPermSizeは何をするのですか?

2022-01-23 07:35:02

質問

具体的には、なぜPermGenのOutOfMemoryErrorの問題を修正するのに役立つのでしょうか?

また、JVMの引数に関するドキュメントを紹介してくれる回答には、ボーナスポイントを差し上げます...

どのように解決するのですか?

パーマネントスペースは、VMが使用するクラス、メソッド、内部化された文字列、および同様のオブジェクトが格納され、決して解放されない場所です(そのため、この名前が付きました)。

このオラクルの記事 HotSpot GCの動作とパラメータ化を簡潔に説明し、多くのクラスをロードする場合は、この領域を拡張することをアドバイスします(これは、アプリケーションサーバーやEclipseなどのIDEで一般的なケースです)。

<ブロッククオート

永続的な生成は、ガベージコードに顕著な影響を与えません。 コレクターの性能は、ほとんどのアプリケーションで しかし、一部の アプリケーションは、多くのクラスを動的に生成し、ロードします。 JavaServer Pages (JSP) ページの実装の一部。これらの を保持するために、より大きな永久世代が必要な場合があります。 を追加することができます。その場合、最大永久世代サイズは コマンドラインオプション -XX:MaxPermSize= で増やせます。

注意点 この他のオラクルのドキュメント は他のHotSpotの引数をリストアップしています。

更新: Java 8から、permgenスペースとこの設定の両方がなくなりました。ロードされたクラスとメソッドに使用されるメモリモデルは異なり、制限されません(デフォルトの設定では)。このエラーはもう表示されないはずです。