パラレル圧縮は、マルチプロセッサ (またはマルチスレッド) ハードウェアを利用するためにフル GC をパラレルで実行することで、既存のパラレルコレクタを補完します。名前が示すとおり、2 つ以上の CPU または 2 つ以上のハードウェアスレッドを持つプラットフォームに最適です。この機能は JDK 5.0 update 6 で最初に使用可能になり、JDK 6 の実装ではパフォーマンスが大幅に向上しています。
パラレル圧縮が使用可能になる以前は、パラレルコレクタがパラレルに若い世代コレクション (若い GC) を実行していましたが、フル GC はシングルスレッドで実行されていました。(若い GC 時には若い世代のみが収集され、フル GC 時にはヒープ全体が収集されます。)世代およびガベージコレクションについては、以下で参照されるドキュメントを参照してください。パラレル圧縮はフル GC をパラレルに実行します。これにより、ガベージコレクションオーバーヘッドが減少し、アプリケーションパフォーマンスが向上します (特に、マルチプロセッサハードウェア上で実行される、大きなヒープを持つアプリケーションで)。
パラレル圧縮はデフォルトで有効になっていません。
-XX:+UseParallelOldGC
パラレル圧縮を有効にするには、このオプションを java
コマンド行に追加します。(今後のリリースでは、パラレル圧縮はマルチプロセッサハードウェア上でデフォルトで有効になる予定です。)
パラレル圧縮はコンカレントマークスイープコレクタとともに使用することはできません。パラレル若い世代コレクタでのみ使用できます。使用可能なコレクタおよび推奨の使用方法については、以下で参照されるドキュメントを参照してください。
HotSpot メモリー管理ホワイトペーパーでは、HotSpot で使用可能なさまざまなコレクタについて説明されており、パラレル圧縮を使用するタイミングに関する推奨事項およびアルゴリズムに関する概要説明が含まれています。
HotSpot ドキュメントページには、各リリースに固有のガベージコレクションチューニングガイドへのリンクが含まれています。要件に最適なガベージコレクタを選択するためのガイドラインと、ガベージコレクションオーバーヘッドを減らすのに役立つテクニックが示されています。