具体的には、なぜPermGen OutOfMemoryErrorの問題を解決するのに役立つのですか?
また、JVM引数に関するドキュメントを私に示す回答に対するボーナスポイント...
具体的には、なぜPermGen OutOfMemoryErrorの問題を解決するのに役立つのですか?
また、JVM引数に関するドキュメントを私に示す回答に対するボーナスポイント...
回答:
永続スペースには、VMが使用するクラス、メソッド、内部化された文字列、および同様のオブジェクトが格納され、割り当てが解除されることはありません(そのため、名前が付けられます)。
このOracleの記事では、HotSpot GCの機能とパラメーター化について簡潔に説明し、多くのクラスをロードする場合は、このスペースを増やすことをお勧めします(これは通常、アプリケーションサーバーやEclipseなどのIDEの場合です)。
永続的な世代は、ほとんどのアプリケーションのガベージコレクタのパフォーマンスに顕著な影響を与えません。ただし、一部のアプリケーションは多くのクラスを動的に生成してロードします。たとえば、JavaServer Pages(JSP)ページのいくつかの実装。これらのアプリケーションでは、追加のクラスを保持するために、より大きな永続的な世代が必要になる場合があります。その場合、コマンドラインオプション-XX:MaxPermSize =を使用して、永続的な最大生成サイズを増やすことができます。
なお、この他のOracleのドキュメントのリストが他のHotSpot引数。
更新: Java 8以降、permgenスペースとこの設定の両方がなくなりました。ロードされたクラスとメソッドに使用されるメモリモデルは異なり、制限はありません(デフォルト設定)。このエラーは表示されなくなります。
Java 8では、このパラメーターは通常、次のような警告メッセージを出力するために使用されます。
Java HotSpot(TM)64ビットサーバーVM警告:オプションMaxPermSize = 512mを無視します。サポートは8.0で削除されました
Java 8でこのメッセージが表示される理由は、PermGenのいくつかの欠点に対処するためにPermgenがMetaspaceに置き換えられたためです(ご存じのとおり、これらの欠点の1つは、サイズが固定されていることです)。
FYI:メタスペースに関する記事:http ://java-latte.blogspot.in/2014/03/metaspace-in-java-8.html