1

G1 の一時停止時間は短いがスループットが低い理由 (スループットが低いということは、GC が実行される合計時間 (秒) が長くなることを意味します)

メモリが小さな部分に分割されているため、私の理解では、完全なヒープよりも小さな部分でフルを実行する必要があります。実際、完全なヒープで実行されていないため、現在完全な GC はないと言えますが、代わりに複数のバックグラウンド スレッドが同時に実行されており、最大数のデッド オブジェクトを含むメモリ ブロックを最初にクリアしています。そのため、休憩時間は短いです。

大きなメモリが小さなブロックに分割されているため、スループットが低くなります。これは、複数の GC スレッドを単一のブロックではなく小さなブロックで実行する必要があるためです。そのため、ほとんどの場合、多少忙しいでしょう。

あれは正しいですか ?

また、G1 が 4GB より大きいヒープに適しているのはなぜですか? より小さなブロッカーに分割され、一時停止時間が遅くなるため、すべてのヒープ サイズでより適切に機能するはずです。では、なぜ G1 が 4 GB より大きいヒープに推奨されるのでしょうか?

4

1 に答える 1

0

G1 は、ライブ オブジェクトのマーキングを同時に使用しますが、デッド オブジェクトのクリーンアップは停止します。そのため、一時停止時間はストップ ザ ワールド GC (Parallel Scavenge など) よりも短くなりますが、ライブ オブジェクトの同時マーキングを行うためのリソースが少なくなり、ライブ オブジェクトの再マーキングに必要な追加の時間が増えるため、GC を実行する時間が長くなります (オブジェクトは実行中に変更されます)。コンカレント マーキング フェーズ)。

于 2016-10-01T00:01:10.990 に答える