为什么JVM中新生代有两个Survivor区?
如题。
小伙看你根骨奇佳,潜力无限,来学PHP伐。
個人的には、S0 と S1 はパフォーマンスを向上させるために存在すると感じています。
生存者スペースの使用: 常に空の Survivor スペースが 1 つあり、次のコレクションのコピー中に、eden と別の Survivor スペース内のライブ オブジェクトがこのスペースにコピーされます。 ライブ オブジェクトは、オブジェクトが十分に古くなり、Tenured 世代に配置できるようになるまで (過去をコピーする)、2 つの Survivor スペース間で往復コピーされます。
生存者スペースの使用:
常に空の Survivor スペースが 1 つあり、次のコレクションのコピー中に、eden と別の Survivor スペース内のライブ オブジェクトがこのスペースにコピーされます。 ライブ オブジェクトは、オブジェクトが十分に古くなり、Tenured 世代に配置できるようになるまで (過去をコピーする)、2 つの Survivor スペース間で往復コピーされます。
死んだオブジェクトはガベージ コレクション中にクリーンアップする必要があるため、生存領域が 1 つしかない場合、この生存領域内の死んだオブジェクトは、メモリの断片化を避けるために、生きたオブジェクトによってメモリの断片を生成します。移動させるとパフォーマンスが低下します。
上記の記述によれば、生存領域が 2 つある場合、メモリの断片化の問題は発生しません。
SO の答えはここにあります: http://stackoverflow.com/ques...
新世代は复制收集算法を使用し、2つのサバイバーエリアは复制收集算法と協力することになります。 この種の問題については、私のブログで詳しく紹介していますので、興味があればご覧ください。
复制收集算法
各 GC の後、2 人の生存者は位置を交換します今のところ私が知っている唯一のことは、それを失う方法です
デブリの発生を防ぐための伝説のバディシステム。
個人的には、S0 と S1 はパフォーマンスを向上させるために存在すると感じています。
死んだオブジェクトはガベージ コレクション中にクリーンアップする必要があるため、生存領域が 1 つしかない場合、この生存領域内の死んだオブジェクトは、メモリの断片化を避けるために、生きたオブジェクトによってメモリの断片を生成します。移動させるとパフォーマンスが低下します。
上記の記述によれば、生存領域が 2 つある場合、メモリの断片化の問題は発生しません。
SO の答えはここにあります: http://stackoverflow.com/ques...
新世代は
复制收集算法
を使用し、2つのサバイバーエリアは复制收集算法
と協力することになります。この種の問題については、私のブログで詳しく紹介していますので、興味があればご覧ください。
各 GC の後、2 人の生存者は位置を交換します
今のところ私が知っている唯一のことは、それを失う方法です
デブリの発生を防ぐための伝説のバディシステム。