-XX:MaxPermSize は何をしますか? 質問する

-XX:MaxPermSize は何をしますか? 質問する

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

また、JVM 引数に関するドキュメントを紹介する回答にはボーナスポイントが付きます...

ベストアンサー1

永続的な領域は、VM によって使用されるクラス、メソッド、内部化された文字列、および同様のオブジェクトが格納され、解放されることのない場所です (これが名前の由来です)。

このOracleの記事HotSpot GC の動作とパラメータ化を簡潔に示し、多くのクラスをロードする場合はこの領域を増やすことを推奨します (これは通常、アプリケーション サーバーや Eclipse などの一部の IDE の場合に当てはまります)。

永久世代は、ほとんどのアプリケーションではガベージ コレクターのパフォーマンスに目立った影響を与えません。ただし、一部のアプリケーションでは、多数のクラスを動的に生成して読み込みます。たとえば、JavaServer Pages (JSP) ページの一部の実装などです。これらのアプリケーションでは、追加のクラスを保持するために、より大きな永久世代が必要になる場合があります。その場合、コマンド ライン オプション -XX:MaxPermSize= を使用して、永久世代の最大サイズを増やすことができます。

ご了承くださいその他のOracleドキュメントその他の HotSpot 引数を一覧表示します。

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

おすすめ記事