検索

ホームページ  >  に質問  >  本文

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

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

如题。

伊谢尔伦伊谢尔伦2840日前883

全員に返信(4)返信します

  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:00:39

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

    生存者スペースの使用:

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

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

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

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

    返事
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:00:39

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

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:00:39

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

    返事
    0
  • 迷茫

    迷茫2017-04-18 10:00:39

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

    返事
    0
  • キャンセル返事