<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

     StackOverflow上面給出的解釋是:

    The reason for the HotSpot JVM's two survivor spaces is to reduce the need to deal with fragmentation. New objects are allocated in eden space. All well and good. When that's full, you need a GC, so kill stale objects and move live ones to a survivor space, where they can mature for a while before being promoted to the old generation. Still good so far. The next time we run out of eden space, though, we have a conundrum. The next GC comes along and clears out some space in both eden and our survivor space, but the spaces aren't contiguous. So is it better to

    1. Try to fit the survivors from eden into the holes in the survivor space that were cleared by the GC?
    2. Shift all the objects in the survivor space down to eliminate the fragmentation, and then move the survivors into it?
    3. Just say "screw it, we're moving everything around anyway," and copy all of the survivors from both spaces into a completely separate space--the second survivor space--thus leaving you with a clean eden and survivor space where you can repeat the sequence on the next GC?

    Sun's answer to the question is obvious.


      對(duì)于如何達(dá)到“無碎片”的目的,理解上可能有些困難,下面我把新生代回收機(jī)制詳細(xì)解釋一下:

      注意,兩個(gè)survivor是交替使用的,在任意一個(gè)時(shí)刻,必定有一個(gè)survivor為空,一個(gè)survivor中存放著對(duì)象(連續(xù)存放,無碎片)。回收過程如下:

      S1、GC,將eden中的live對(duì)象放入當(dāng)前不為空的survivor中,將eden中的非live對(duì)象回收。如果survivor滿了,下次回收?qǐng)?zhí)行S2;如果survivor未滿,下次回收仍然以S1的方式回收;

      S2、GC,將eden和存放著對(duì)象的survivor中的live對(duì)象放入當(dāng)前為空的survivor中,將非live對(duì)象回收。

      可以看到,上述的新生代回收機(jī)制保證了一個(gè)survivor為空,另一個(gè)非空survivor中無碎片。

      在執(zhí)行一定次數(shù)的minor GC后,會(huì)通過Full GC將新生代的survivor中的對(duì)象移入老年代。


      對(duì)于理解GC的整個(gè)機(jī)制,推薦一篇非常好的文章http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/

    posted on 2014-12-09 14:16 abin 閱讀(1021) 評(píng)論(0)  編輯  收藏 所屬分類: JVM
    主站蜘蛛池模板: 亚洲а∨天堂久久精品| 青草久久精品亚洲综合专区| 亚洲AV无码一区东京热| 亚洲一区二区三区AV无码| 亚洲中文字幕无码久久精品1 | 久久免费国产视频| 午夜影院免费观看| 最近免费中文字幕高清大全 | 全黄A免费一级毛片| 窝窝影视午夜看片免费| 性生大片视频免费观看一级| 又粗又长又爽又长黄免费视频 | 特级做A爰片毛片免费看无码 | japanese色国产在线看免费| 久久www免费人成看国产片| a级毛片免费高清毛片视频| 国产精品免费一区二区三区四区| 久久久久国产精品免费免费不卡| 最近中文字幕完整免费视频ww| 日本免费网站视频www区| 成年人视频在线观看免费| 四虎永久免费影院在线| 久久精品亚洲乱码伦伦中文| 亚洲AV综合色区无码一区| 亚洲国产精品日韩在线| 亚洲精品免费网站| 最新69国产成人精品免费视频动漫 | 毛片免费在线播放| 福利免费观看午夜体检区| 久久国产精品免费专区| 曰批全过程免费视频网址| 女人18毛片a级毛片免费 | 亚欧免费一级毛片| 成年人免费网站在线观看| 男人的天堂亚洲一区二区三区| 久久亚洲国产精品一区二区| 亚洲乱码日产精品BD在线观看| 国产亚洲综合久久| 无码A级毛片免费视频内谢| 在线观看免费污视频| 亚洲色中文字幕无码AV|