Quality Outreach Heads-up – JDK 27: Default G1 in All Environments

原文はこちら。
This article was written by Nicolai Parlog (Java Developer Advocate at Oracle).
https://inside.java/2026/07/20/quality-heads-up/

OpenJDK Quality Groupは、リリースの全体的な品質向上の手段としてOpenJDKビルドを使ってのFOSSプロジェクトのテストを推進しています。

Quality Outreach
https://wiki.openjdk.java.net/display/quality/Quality+Outreach

このHeads upは、関係するプロジェクトに送られる定期的なコミュニケーションの一部です。

Java 26 Is Now Available | JDK 27 Heads-Ups – quality-discuss – openjdk.org

このプログラムの詳細と参加方法については、上記wikiをご覧ください。

コマンドラインでガベージコレクタが指定されていない場合、HotSpot JVMは環境に応じてG1 GCまたはSerial GCのいずれかを選択していました。本来はG1を優先していましたが、リソースが限られた環境においては、これまでSerialがスループットとメモリ使用量の面で優位性を持っていたため、CPUが1つ (1 core) しか検出されない場合や、物理メモリが1,792MB未満と検出された場合には、JVMはSerialを選択していました。

最近の改良により、こうした環境においてもG1はSerial GCと互角の性能を発揮するようになりました。一般的に、G1はSerial GCと同程度のネイティブメモリオーバーヘッドを持ち、スループットはわずかに低く、最大レイテンシはSerial GCよりも低くなります。JVMの挙動を把握しやすくするため、JDK 27以降、すべての環境でG1がデフォルトのガベージコレクタとして選択されるようになりました。

この変更により:

  • Serial GCはJDKから削除されるわけではなく、そのパフォーマンス特性が望ましい状況では引き続き利用可能です
  • コマンドラインで特定のガベージコレクタを選択するアプリケーションには影響しません
  • 複数のCPUと1792 MBを超えるメモリを持つ環境で実行されるアプリケーションには影響しません

つまり、この変更による影響を受けるのは、制約のある環境で実行され、かつガベージコレクタを指定していないアプリケーションのみです。そのような場合は、さまざまなGCでアプリケーションのベンチマークを行い、そのニーズに最も適したGCを選択することをお勧めします。それが不可能な場合は、G1を新しいデフォルトとして受け入れるか、Serialを設定してGC関連のパフォーマンス特性に変化が生じないよう保証することができます。

詳細については、JEP 523をご確認ください。

JEP 523: Make G1 the Default Garbage Collector in All Environments

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください