[Java] Longer Young Collections with JDK7 as Compared to JDK6

原文はこちら。
https://blogs.oracle.com/poonam/entry/longer_young_collections_with_jdk7

JDK 6からJDK 7へ移行した結果、Young世代のGCがJDK 6当時よりも時間を要している場合、以下のオプションで改善できます。
-XX:+JavaObjectsInPerm
JDK 7では、クラスの統計情報や、intern()を使った文字列をPermGenからJava Heapへ移動しており、その結果少々Young世代のGCに要する時間が増加しています。JavaObjectsInPermというオプションを有効化すると、JDK 6での仕組みに戻すことができます。つまり、クラスの統計情報やintern()を使った文字列をPermGen領域に割り当てます。

それゆえ、PermGenのチューニングは問題ではなく、Young世代のGC時間が悩みの種なのであれば、-XX:+JavaObjectsInPerm を使うとその悩みが緩和されることでしょう。ご注意頂きたいのは、このオプションはJDK 7u80から利用可能になった、ということです。Diagnostic VMオプションとして以下のCRで利用可能になりました。
Minor GC times doubled from JDK 6u35 to JDK 7u51
https://bugs.openjdk.java.net/browse/JDK-8048271
診断オプションなので、次のオプションと一緒に使う必要があります。
-XX:+UnlockDiagnosticVMOptions
JDK 8ではPermGenが削除されたため、このオプションはJDK 8では使えませんので、ご注意ください。

0 件のコメント:

コメントを投稿