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