回答:
これらの引数を無視する理由は恒久的な生成であるHotSpot for JDK8では、次の欠点のため削除されました。
Permanent Generation(PermGen)スペースは完全に削除され、メタスペースと呼ばれる新しいスペースに置き換えられています。PermGenの削除の結果、明らかに、PermSizeおよびMaxPermSize JVM引数が無視され、java.lang.OutOfMemoryError:PermGenエラーが発生することはありません。
MetaSpaceの利点
メタスペースの調整
メタスペースの最大サイズは、-XX:MaxMetaspaceSizeフラグを使用して設定できます。デフォルトは無制限です。つまり、システムメモリのみが制限になります。-XX:MetaspaceSizeチューニングフラグは、メタスペースの初期サイズを定義します。このフラグを指定しない場合、メタスペースは、実行時のアプリケーションの要求に応じて動的にサイズ変更されます。
変更により、将来的に他の最適化と機能が可能になります
GCパフォーマンスも改善されています。もっと詳しく
これは、Java 8の新機能の1つであり、JDK拡張提案122の一部です。
Hotspot JVMから永続的な世代を削除します。これにより、永続的な世代のサイズを調整する必要があります。
Java 8に含まれるすべてのJEPのリストは、JDK8マイルストーンページにあります。
Permanent Generation(PermGen)スペースは完全に削除され、Metaspaceと呼ばれる新しいスペースに置き換えられます。PermGen削除の結果は、明らかにPermSizeおよびMaxPermSize JVM引数が無視され、java.lang.OutOfMemoryError
:PermGenエラーが発生することはありません。
JDK 8 HotSpot JVMは、クラスメタデータの表現にネイティブメモリを使用するようになり、メタスペースと呼ばれます。 続きを読む>>
PermGenスペースが削除されたためです。メモリ管理が少し変更されました。
Java 8では、PermGenスペースはMetaSpaceに置き換えられています。PermSizeおよびMaxPermSize JVM引数は無視され、起動時に存在する場合は警告が発行されます。
クラスメタデータのほとんどの割り当ては、ネイティブメモリから割り当てられます。*クラスメタデータの記述に使用されていたクラスが削除されました。
古いPermGenと新しいMetaSpaceの主な違いは、メモリ使用量の上限を定義する必要がないことです。MetaSpaceのスペース制限を無制限に保つことができます。したがって、メモリ使用量が増加してもOutOfMemoryErrorエラーは発生しません。代わりに、予約されたネイティブメモリが増加して、メモリ使用量がいっぱいになります。
MetaSpaceのスペースの上限を定義すると、OutOfMemoryError:Metadata spaceがスローされます。したがって、メモリの浪費を回避できるように、この制限を慎重に定義することが重要です。
OracleのJava 8のJVM実装は、PermGenモデルを廃止し、それをMetaspaceに置き換えました。