[解決済み】JDK 8におけるPermGenの排除について
2022-04-03 12:48:46
質問
JDK 8をインストールし、Eclipseを実行しようとしています。以下のような警告メッセージが表示されます。
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m;
support was removed in 8.0
このVMオプションを無視する理由は何でしょうか?
解決方法は?
これらの引数を無視する理由は、以下の欠点があるため、HotSpot for JDK8 では永久的な生成が削除されたからです。
- 起動時のサイズが固定されるため、チューニングが難しい。
- 内部ホットスポットの型は、Javaオブジェクトでした。完全なGCで移動可能、不透明、強く型付けされておらずデバッグが困難、メタメタデータを必要とする。
- フルコレクションを簡素化 : コレクターごとにメタデータ用の特別なイテレータを用意する。
- GCポーズ中ではなく、同時にクラスデータの割り当てを解除したい
- PermGenによって制限されていた将来の改良を可能にする。
パーマネント・ジェネレーション(PermGen)スペースは完全に削除され、メタスペースという新しいスペースに置き換わったようなものです。 PermGen が削除された結果、明らかに PermSizeとMaxPermSizeのJVM引数は無視されます。 となり、java.lang.OutOfMemoryErrorが発生することはありません。PermGenエラーが発生することはありません。
MetaSpaceのメリット
- Java言語仕様のプロパティを利用:クラスと関連するメタデータの寿命はクラスローダーのものと一致する。
- ローダーごとの保存領域 - メタスペース
- リニアアロケーションのみ
- 個別再利用なし(RedefineClassesとクラスの読み込み失敗を除く)
- GCスキャン、コンパクションなし
- メタスペースオブジェクトのリロケーションなし
メタスペースのチューニング
メタスペースの最大サイズは -XX:MaxMetaspaceSize フラグで設定でき、デフォルトは unlimited、つまりシステムメモリのみが制限となります。XX:MetaspaceSizeチューニングフラグは、メタスペースの初期サイズを定義します。このフラグを指定しない場合、メタスペースは実行時にアプリケーションの要求に応じて動的にサイズ変更されます。
この変更により、将来的に他の最適化および機能が可能になります
- アプリケーションクラスのデータ共有
- ヤングコレクション最適化、G1クラスアンローディング
- メタデータサイズの縮小とJVM内部フットプリントプロジェクト
また、GC性能も向上しています。 詳細
関連
-
[解決済み】JNI共有ライブラリ(JDK)の読み込みに失敗しました。)
-
[解決済み] Java HotSpot(TM) 64-Bit Server VM の警告:オプション MaxPermSize を無視する。
-
[解決済み] android.support.v4.app.FragmentActivity' で 'TAG' がプライベートアクセスされている。
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] .lengthが解決できない、またはフィールドでない
-
[解決済み] java.lang.UnsupportedClassVersionError を修正する方法。サポートされていないメジャー.マイナーバージョン
-
[解決済み] java.lang.OutOfMemoryError "に対処する。PermGen space "エラーに対処する
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
-
[解決済み] Ubuntu LinuxにJDKをインストールする方法
-
[解決済み】Eclipse - Java (JRE) / (JDK) がない......仮想マシンがない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】-XX:MaxPermSizeは何をするのですか?
-
[解決済み] Java の substring() の時間複雑性
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] javaでAnnotation Inheritanceのようなものはあるのでしょうか?
-
[解決済み] アニメーションGIFの表示
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] Eclipseでクラスとそれに対応するファイルの名前を変更する方法は?
-
[解決済み] Javaでは、静的メソッドと静的変数はどこに格納されているのですか?