[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
質問
Java VMのフラグが何なのか、どうしても定義が見つかりません。
CMSClassUnloadingEnabled
PermGenの問題を解決する"などの非常にあいまいな高レベルの定義以外に、実際に何をしているのか(
それはない
ということです。)
Sun/Oracleのサイトを見てみましたが、さらに オプションリスト は、実際に何をするものなのかが書かれていません。
フラグの名前から推測すると、CMSガーベジコレクタはデフォルトでクラスをアンロードしないので、このフラグでアンロードをオンにするのだろうと思います - しかし、確証はありません。
解決方法は?
更新情報 この回答はJava 5-7に関連するものです。Java 8ではこの問題は修正されています。 https://blogs.oracle.com/poonam/about-g1-garbage-collector,-permanent-generation-and-metaspace クドスはこちら マウント・ウール
Java 5-7用です。
Oracle/Sun VMの標準的な考え方は、「クラスは永遠である」というものです。つまり、一度読み込まれたクラスは、誰も気にしなくなったとしても、ずっとメモリに残っているのです。これは通常、純粋にセットアップされたクラス(セットアップのために一度だけ使用され、その後は二度と使用されない)はそれほど多くないので問題ありません。つまり、たとえ1MBを占有していたとしても、誰も気にしないのです。
でも最近はGroovyのように、実行時にクラスを定義する言語も出てきていますよね。スクリプトを実行するたびに、1つ(またはそれ以上)の新しいクラスが作成され、それらは永久にPermGenにとどまる。サーバーを動かしているならば、それはメモリリークがあることを意味する。
を有効にすると
CMSClassUnloadingEnabled
GCはPermGenも掃引し、使われなくなったクラスを削除します。
[EDIT】です。]
を有効にする必要があります。
UseConcMarkSweepGC
(おかげさまで
サム・ハスラー
). こちらの回答をご覧ください。
https://stackoverflow.com/a/3720052/2541
関連
-
[解決済み] JVM起動時のパラメータ「-Xms」「-Xmx」とは何ですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] Javaはパラメータのデフォルト値をサポートしていますか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] シンクロナイズド」とはどういう意味ですか?
-
[解決済み】Javaではfinallyブロックは必ず実行されるのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.lang.ClassCastException: java.util.Arrays$ArrayList は java.util.ArrayList にキャストできません。
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] javaでAnnotation Inheritanceのようなものはあるのでしょうか?
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] SubclipseとJavaHLのインストールで頭を悩ます
-
[解決済み] java.lang.OutOfMemoryError "に対処する。PermGen space "エラーに対処する
-
[解決済み】Javaの「ダブルブレース初期化」の効率化?