当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

在HotSpot中如何实现分代回收

发表于: 2011-03-12   作者:chenchao051   来源:转载   浏览次数:
摘要:     题目是个大话题,不过在Oracle官方的FAQ里,个人觉得短小而精辟。短短几句话,可以让那些对generational collector不太清楚的朋友们迅速了解: The default collector in HotSpot has two generations: the young generation and the tenured gene
    题目是个大话题,不过在Oracle官方的FAQ里,个人觉得短小而精辟。短短几句话,可以让那些对generational collector不太清楚的朋友们迅速了解:

The default collector in HotSpot has two generations: the young generation and the tenured generation. Most allocations are done in the young generation. The young generation is optimized for objects that have a short lifetime relative to the interval between collections. Objects that survive several collections in the young generation are moved to the tenured generation. The young generation is typically smaller and is collected more often. The tenured generation is typically larger and collected less often.
HotSpot默认回收器有两代:年轻代和年老代。大多数的分配都在年轻代中完成。年轻代对对象做了优化,即相对于回收间隔来说,这些对象拥有更短的生命周期。在年轻代中的一些对象,加入经过几次回收之后仍然存在,那么它们将被移至年老代中。相对来说,年轻代往往比较小并且会被更频繁的进行垃圾回收,而年老代正好相反。

The young generation collector is a copying collector. The young generation is divided into 3 spaces: eden-space, to-space, and from-space. Allocations are done from eden-space and from-space. When those are full a young generation is collection is done. The expectation is that most of the objects are garbage and any surviving objects can be copied to to-space. If there are more surviving objects than can fit into to-space, the remaining objects are copied into the tenured generation. There is an option to collect the young generation in parallel.
年轻代回收器是基于复制的。年轻代被分为三个空间:eden-space, to-space, and from-space.分配的动作就在eden-space和from-space中完成。年轻代经过回收以后,我们期望的结果是大部分的对象将会被回收,而那些没有被回收的对象就被复制到to-space中,加入存活下来的对象不能所有都装进to-space,那么剩下的对象直接将被送进年老代。当然,也可以选择在年轻代中并行收集(也就是使用多个线程同时进行垃圾回收的工作)。

The tenured generation is collected with a mark-sweep-compact collection. There is an option to collect the tenured generation concurrently.
年老代使用mark-sweep-compact策略进行回收,也可以选择并发回收。

在HotSpot中如何实现分代回收

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
什么是分代 当使用分代回收技术,内存会被分为几个代(generation)。也就是说,按照对象存活的年龄
《深入理解Java虚拟机:JVM高级特性与最佳实践》-笔记 垃圾回收算法 枚举根结点 一致性 在可达性分
《深入理解Java虚拟机:JVM高级特性与最佳实践》-笔记 垃圾回收算法 枚举根结点 一致性 在可达性分
转自:http://coderbee.net/index.php/jvm/20131105/557 《深入理解Java虚拟机:JVM高级特性与最佳
虚拟机中的共划分为三个代:年轻代、年老代和持久代。其中持久代主要存放的是Java类的类信息,与垃
文章总结了JVM垃圾回收策略为什么要分代,如何分代,以及垃圾回收的触发因素。   为什么要分代  
虚拟机中的共划分为三个代:年轻代、年老点和持久代。其中持久代主要存放的是Java类的类信息,与垃
摘自:http://developer.51cto.com/art/201201/311696.htm 为什么要分代 分代的垃圾回收策略,是基
为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不
摘自: http://developer.51cto.com/art/201001/175883.htm 本文来自和你在一起的博客,原文标题为
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号