http://openjdk.java.net/jeps/307 をテキトーに訳した。
JEP 307: Parallel Full GC for G1
Owner Stefan Johansson Created 2017/01/17 11:40 Updated 2017/11/13 16:52 Type Feature Status Targeted Component hotspot?/?gc Scope Implementation Discussion hotspot dash gc dash dev at openjdk dot java dot net Effort M Duration M Priority 3 Reviewed by Mikael Vidstedt Endorsed by Mikael Vidstedt Release 10 Issue 8172890
Summary
G1のワーストケースのレイテンシ改善のため、パラレルのフルGCを導入します。
Non-Goals
すべてのユースケースにおけるパラレルGCのフルGCのパフォーマンス調整。
Motivation
G1 GCはJDK 9のデフォルトになりました。以前のデフォルトのパラレルGCには、パラレルフルGCがあります。ユーザが直面するフルGCのインパクトを最小化するため、G1フルGCもパラレルに出来るのが望ましいです。
Description
G1 GCはフルGCを避けるように設計されていますが、コンカレントコレクションが速やかにメモリを回収出来ない場合はフルGCにフォールバックします。G1 GCの現在の実装はシングルスレッドのmark-sweep-compactアルゴリズムです。我々はmark-sweep-compactアルゴリズムをパラレル化し、また、YoungとMixedのコレクションに同じ数のスレッドを使うようにしよう、と考えています。スレッド数は-XX:ParallelGCThreads
オプションで制御可能にしますが、YoungとMixedコレクションに使われるスレッド数にも影響します。
Testing
- フルGC時間の改善を確認するためにその時間を分析します。G1はフルGCを避けるよう設計されているので、ベンチマークスコアの確認ではおそらく不十分です。
- ボトルネックを見つけ出すのにVTuneもしくはSolaris Studio Performance Analyzerを使用したランタイム分析をします。