web-dev-qa-db-ja.com

-XX:+ UseG1GCは-Xincgcの正しい置き換えですか?

現在、Javaコマンドに-Xincgcを追加することにより、増分ガベージコレクターを使用しています。JDK 8このスイッチは廃止されました。同等の代替品は何ですか?-XX:+UseG1GC

背景:アプリケーションには8GBのヒープがあり、多くの短い生きているオブジェクトを作成します。ガベージコレクションを実行するために数秒間休止することがよくありました。好奇心から、-Xincgcを追加しましたが、一時停止がなくなり、全体的なパフォーマンスが約4倍向上しました。

残念ながら、-Xincgcがトリガーするガベージコレクターのタイプに関する情報は見つかりませんでした。 [〜#〜] cms [〜#〜](同時マークとスイープ)と新しいG1(最初にごみ)。しかし、-Xincgcで何が得られますか?

10
BetaRide

Oracle/OpenJDK 8の場合、シリアルGCである32ビットWindowsマシンを除き、ほとんどのマシンのデフォルトコレクターは並列スループットコレクターです。

XincgcはインクリメンタルモードのCMSです。目にする主な利点は、シングルコアCPU用に設計されたインクリメンタルモードからではなく、スループットコレクターからCMSに切り替えることによるものです。

インクリメンタルモードも非推奨 なので、-XX:+UseConcMarkSweepGCを介してCMSを有効にし、それが機能するかどうかを確認します。

もちろん、G1GCを試すこともできます。G1GCは、短い休止時間の目標を達成するように設計されており、CMSのように断片化の影響を受けないため、シングルスレッドの停止をもたらす同時モード障害が発生する可能性が少ないという利点があります。ワールドコレクション。

したがって、両方を試して測定してください。

参照: OracleのJava 8 GCチューニングガイド

12
the8472

このオプションが新しいバージョンでOracleによって完全に非推奨になるまで。次のjvmパラメータを適用することで、これを引き続き使用できます。

-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

後の2つのパラメーターは、GCアクティビティのログオン用です。

2
Tim Long