Java虚拟机--一段Java程序的生命史(七)

我们已经知道要回收的对象何时触发垃圾收集:安全点就是一些让程序暂定执行从而进行GC的位置,然后我们很容易知道GC停顿的时间是垃圾收集的核心。

创新互联公司服务项目包括青州网站建设、青州网站制作、青州网页制作以及青州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,青州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到青州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
垃圾收集算法的所有以及衍生出来的垃圾收集器都是围绕着尽量减少GC停顿时间产生的,现在最新的G1垃圾收集器可以建立可预测的停顿时间模型有计划的避免在整个Java堆中进行全区域的垃圾收集。前面介绍内存区域分布的概念的时候我们谈到了新生代、老年代而不同的垃圾收集器有可能作用于新生代、也有可能作用于老年代甚至没有分代的概念(比如G1收集器)下面就具体介绍下垃圾收集算法及对应的垃圾收集器。
标记-清除算法
最基础的收集算法算法分为标记和清除两个阶段:首先标记处所有要回收的对象,在标记完成之后统一回收所有被标记的对象。它的不足是效率不高还会产生大量不连续的内存碎片导致的问题当程序运行过程分配较大对象时即使堆中还有足够的内但是无法找到足够的连续内存只能不得不触发一次GC操作这地方对应的垃圾收集器是CMS收集器。
复制算法
复制算法是为了解决效率问题而生的它可以将可用内存容量划分为大小相等的两块,每次只使用其中一块当这一块内存用完了就将还存活的对象复制到另外一块上面然后再把已使用过的内存空间一次清理掉这样每次会对整个半区进行GC并且不会产生内存碎片等问题。

当前题目:Java虚拟机--一段Java程序的生命史(七)
文章起源:http://hbruida.cn/article/cjsehi.html