https://blogs.oracle.com/poonam/entry/longer_young_collections_with_jdk7
JDK 6からJDK 7へ移行した結果、Young世代のGCがJDK 6当時よりも時間を要している場合、以下のオプションで改善できます。
JDK 7では、クラスの統計情報や、intern()を使った文字列をPermGenからJava Heapへ移動しており、その結果少々Young世代のGCに要する時間が増加しています。-XX:+JavaObjectsInPerm
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
JDK 8ではPermGenが削除されたため、このオプションはJDK 8では使えませんので、ご注意ください。-XX:+UnlockDiagnosticVMOptions
0 件のコメント:
コメントを投稿