java - 为什么JVM中新生代有两个Survivor区?
伊谢尔伦
伊谢尔伦 2017-04-18 09:58:39
0
4
889

为什么JVM中新生代有两个Survivor区?

如题。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(4)
伊谢尔伦

個人的には、S0 と S1 はパフォーマンスを向上させるために存在すると感じています。

生存者スペースの使用:

常に空の Survivor スペースが 1 つあり、次のコレクションのコピー中に、eden と別の Survivor スペース内のライブ オブジェクトがこのスペースにコピーされます。
ライブ オブジェクトは、オブジェクトが十分に古くなり、Tenured 世代に配置できるようになるまで (過去をコピーする)、2 つの Survivor スペース間で往復コピーされます。

死んだオブジェクトはガベージ コレクション中にクリーンアップする必要があるため、生存領域が 1 つしかない場合、この生存領域内の死んだオブジェクトは、メモリの断片化を避けるために、生きたオブジェクトによってメモリの断片を生成します。移動させるとパフォーマンスが低下します。

上記の記述によれば、生存領域が 2 つある場合、メモリの断片化の問題は発生しません。

SO の答えはここにあります: http://stackoverflow.com/ques...

いいねを押す +0
大家讲道理

新世代は复制收集算法を使用し、2つのサバイバーエリアは复制收集算法と協力することになります。
この種の問題については、私のブログで詳しく紹介していますので、興味があればご覧ください。

いいねを押す +0
Peter_Zhu

各 GC の後、2 人の生存者は位置を交換します
今のところ私が知っている唯一のことは、それを失う方法です

いいねを押す +0
迷茫

デブリの発生を防ぐための伝説のバディシステム。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート