注目★★★★★Lobsters
ZGC の弱参照処理を最適化、clear_path+dyn で 81% 削減
30秒で把握
- 1ZGCの弱参照処理を3手法の組み合わせで最大81%削減を達成
- 2sep・dyn・clear_path の超加法効果が判明、単独では最大36%にとどまる
- 3JDK-8029205 で未解決・weak_fields による根本置き換え案も提示
要約
ウプサラ大学の修士論文として、Oracle GCチームと共同でZGCの弱参照処理オーバーヘッドを調査した研究が公開された。WeakReferenceのキュー未登録オブジェクトを別リストへ振り分ける「sep」、発見リストを連続配列化してキャッシュ局所性を高める「dyn」、参照フィールドクリアのバリアやCASを省略する「clear_path」の3つの最適化を組み合わせることで、非強参照処理時間を最大81%削減できた。各最適化の単独効果(7%・36%)の合計を大きく上回る超加法的な効果が確認された。さらに、WeakReferenceオブジェクト自体をアノテーション付きフィールド機構「weak_fields」に置き換える根本的アプローチも検討されている。
あなたへの影響
弱参照を大量生成するキャッシュ・インターニングマップを使うアプリケーションでZGCのSTWが問題になっているチームは、この研究の成果がJDKに取り込まれる際の優先度確認のため、OpenJDK issue JDK-8029205 の動向を注視しておくとよい。
推奨:現時点では正式実装には至っていないため、本番での即時アクションは不要。