Java Platform, Standard Edition HotSpot Virtual Machineガベージ・コレクション・チューニング・ガイド
目次      

5 使用可能なコレクタ

ここまでは、シリアル・コレクタについて説明してきました。Java HotSpot VMには3つの異なるタイプのコレクタがあり、それぞれパフォーマンス特性が異なります。

コレクタの選択

それほど厳しい一時停止時間の要件がアプリケーションになければ、まずアプリケーションを実行して、VMにコレクタを選択させます。必要な場合は、ヒープ・サイズを調整してパフォーマンスを改善します。パフォーマンスがまだ目標を満たさない場合は、次のガイドラインをコレクタ選択の基準として使用してください。

  • 小規模なデータ・セット(最大で約100MB)を保持するアプリケーションの場合

    オプション-XX:+UseSerialGCを指定してシリアル・コレクタを選択します。

  • アプリケーションをシングル・プロセッサ上で実行し一時停止時間の要件がない場合は、VMにコレクタを選択させるか、オプション-XX:+UseSerialGCを指定してシリアル・コレクタを選択します。

  • (a) ピーク時のアプリケーションのパフォーマンスを最優先し、(b) 一時停止時間の要件がないか、1秒以上の停止時間が許容される場合は、VMにコレクタを選択させるか、-XX:+UseParallelGCを指定してパラレル・コレクタを選択します。

  • レスポンス時間を全体のスループットよりも重視し、ガベージ・コレクションの一時停止を約1秒未満に短く保つ必要がある場合は、-XX:+UseConcMarkSweepGCまたは-XX:+UseG1GCを指定してコンカレント・コレクタを選択します。

ヒープ・サイズ、アプリケーションが保持するライブ・データの容量、および使用可能なプロセッサの数と速度にパフォーマンスは依存するため、これらのガイドラインはコレクタを選択するための基準を示しているにすぎません。一時停止時間は特にこれらの要因の影響を受けるため、前に説明した1秒のしきい値は概算値にすぎません。たとえば、パラレル・コレクタでは、データ・サイズとハードウェアの組合せの多くで一時停止時間の長さが1秒を超えることがあり、逆に、コンカレント・コレクタでは、一部の組合せにおいて、一時停止を1秒未満に保てない場合があります。

推奨されるコレクタで必要なパフォーマンスを達成できない場合は、まずヒープ・サイズと世代サイズを調整して、必要な目標を満たすようにしてください。それでもパフォーマンスが不十分な場合は、別のコレクタを試してみます。一時停止時間を短縮するにはコンカレント・コレクタを、マルチプロセッサ・ハードウェア上で全体のスループットを上げるにはパラレル・コレクタを使用します。

目次      

Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.