第3章 Red Hat build of OpenJDK 11 と Red Hat build of OpenJDK 17 の主な違い
Red Hat build of OpenJDK 11 以前のバージョンから Java アプリケーションを移行する場合は、まず Red Hat build of OpenJDK 17 で導入された変更点をよく理解する必要があります。これらの変更により、Red Hat build of OpenJDK 21 に移行する前に、既存の Red Hat build of OpenJDK インストールを再設定する必要がある場合があります。
この章では、現在 Red Hat build of OpenJDK 11 以前のバージョンを使用している場合のみが対象です。すでに Red Hat build of OpenJDK 17 を使用している場合は、この章は無視できます。
3.1. Concurrent Mark Sweep ガベージコレクターの削除 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of OpenJDK 17 には、Concurrent Mark Sweep (CMS) ガベージコレクターが含まれなくなりました。これは、一時停止時間と遅延に敏感なワークロードに対して以前のリリースで一般的に使用されていました。
CMS コレクターを使用している場合は、Red Hat build of OpenJDK 17 以降に移行する前に、ワークロードに基づいて以下のいずれかのコレクターに切り替えます。
-
Garbage-First (G1) コレクターは、パフォーマンスとレイテンシーのバランスを取ります。G1 は、通常数百ミリ秒の一時停止時間で、高い一時オブジェクトの割り当て率を実現する世代別コレクターです。G1 はデフォルトで有効になっていますが、
-XX:+UseG1GCJVM オプションを設定し、このコレクターを手動で有効にすることができます。 -
Shenandoah コレクターは、通常の一時停止時間が数ミリ秒である、低レイテンシーコレクターです。Shenandoah は世代別コレクターではないため、G1 コレクターよりも一時オブジェクトの割り当て率が低くなる可能性があります。Shenandoah コレクターを有効にする場合は、
-XX:+UseShenandoahGCJVM オプションを設定します。 -
Z ガベージコレクター (ZGC) は、もう 1 つの低レイテンシーコレクターです。Shenandoah コレクターとは異なり、ZGC は圧縮された通常のオブジェクトポインター (OOP) (つまり、ヒープ参照) をサポートしません。圧縮された OOP はヒープメモリーを節約し、最大 32 GB のヒープサイズのパフォーマンスを向上させるのに役立ちます。これは、特にヒープサイズが小さい場合に、ZGC の常駐メモリーサイズが Shenandoah コレクターよりも大きくなる可能性があることを意味します。ZGC コレクターを有効にする場合は、
-XX:+UseZGCJVM オプションを設定します。
詳細は、JEP 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector を参照してください。