http://openjdk.java.net/jeps/248 をテキトーに訳した
JEP 248: Make G1 the Default Garbage Collector
Owner Stefan Johansson Created 2015/02/16 19:58 Updated 2015/06/24 16:34 Type Feature Status Targeted Component hotspot/gc Scope JDK Discussion hotspot dash dev at openjdk dot java dot net Effort M Duration M Priority 2 Reviewed by Mikael Vidstedt Endorsed by Mikael Vidstedt Release 9 Issue 8073273
Summary
32/64ビットサーバ設定のデフォルトGCをG1にします。
Motivation
一般的には、GCの停止時間を抑えることの方が、スループットの最大化よりも 重視されています。G1などの低停止時間コレクタへの移行により、現行デフォルトのParallel GCなどのスループット重視コレクタよりも、多くのユーザにとってよりよい状況をもたらすと思われます。
多くのパフォーマンス改善がJDK 8のG1に行われ、更なる改良がJDK 9で予定されています。JDK 8u40のconcurrent class unloading(JEP 156)の導入でG1は十分な機能を有するGCとなり、デフォルトにする準備が整いました。
Description
デフォルトのコレクターを変更することそのものは特に難しいことはありません。
Risks and Assumptions
- 待ち時間の抑制という変更はスループット最大化よりも重視される場合が多いです。もしこの前提が誤っている場合、この変更は再考する必要があると思われます。
- G1はロバストで十分にテストされたコレクターであると見なされています。安定性の問題があるとは考えられていませんが、デフォルトコレクタになることで頻繁に使われると、事前には判明しなかった未知の問題が表面化する可能性があります。もしJDK 9の開発期間で解決不能な致命的な問題が発見された場合、JDK 9 GAでのデフォルトはParallel GCを使うようリバートします。
- G1のリソース使用はParallelと異なります。リソース使用のオーバーヘッドを最小化する必要がある場合、G1以外のコレクタを使うべきです。このJEPの変更後には別のコレクターを明示的に指定する必要があります。