kagamihogeの日記

kagamihogeの日記です。

JEP 248: Make G1 the Default Garbage Collectorをテキトーに訳した

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の変更後には別のコレクターを明示的に指定する必要があります。