現在、Javaコマンドに-Xincgc
を追加することにより、増分ガベージコレクターを使用しています。JDK 8このスイッチは廃止されました。同等の代替品は何ですか?-XX:+UseG1GC
?
背景:アプリケーションには8GBのヒープがあり、多くの短い生きているオブジェクトを作成します。ガベージコレクションを実行するために数秒間休止することがよくありました。好奇心から、-Xincgc
を追加しましたが、一時停止がなくなり、全体的なパフォーマンスが約4倍向上しました。
残念ながら、-Xincgc
がトリガーするガベージコレクターのタイプに関する情報は見つかりませんでした。 [〜#〜] cms [〜#〜](同時マークとスイープ)と新しいG1(最初にごみ)。しかし、-Xincgc
で何が得られますか?
Oracle/OpenJDK 8の場合、シリアルGCである32ビットWindowsマシンを除き、ほとんどのマシンのデフォルトコレクターは並列スループットコレクターです。
XincgcはインクリメンタルモードのCMSです。目にする主な利点は、シングルコアCPU用に設計されたインクリメンタルモードからではなく、スループットコレクターからCMSに切り替えることによるものです。
インクリメンタルモードも非推奨 なので、-XX:+UseConcMarkSweepGC
を介してCMSを有効にし、それが機能するかどうかを確認します。
もちろん、G1GCを試すこともできます。G1GCは、短い休止時間の目標を達成するように設計されており、CMSのように断片化の影響を受けないため、シングルスレッドの停止をもたらす同時モード障害が発生する可能性が少ないという利点があります。ワールドコレクション。
したがって、両方を試して測定してください。
このオプションが新しいバージョンでOracleによって完全に非推奨になるまで。次のjvmパラメータを適用することで、これを引き続き使用できます。
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
後の2つのパラメーターは、GCアクティビティのログオン用です。