WEB开发网
开发学院软件开发Java JVM调优总结(九)-新一代的垃圾回收算法 阅读

JVM调优总结(九)-新一代的垃圾回收算法

 2009-12-21 00:00:00 来源:WEB开发网   
核心提示: Garbage Firest(G1)这部分的内容主要参考这里,这篇文章算是对G1算法论文的解读,JVM调优总结(九)-新一代的垃圾回收算法(2),我也没加什么东西了,目标从设计目标看G1完全是为了大型应用而准备的,一个为previous marking bitmap,一个为next markin

Garbage Firest(G1)

这部分的内容主要参考这里,这篇文章算是对G1算法论文的解读。我也没加什么东西了。

目标

从设计目标看G1完全是为了大型应用而准备的。

支持很大的堆

高吞吐量

--支持多CPU和垃圾回收线程

--在主线程暂停的情况下,使用并行收集

--在主线程运行的情况下,使用并发收集

实时目标:可配置在N毫秒内最多只占用M毫秒的时间进行垃圾回收

当然G1要达到实时性的要求,相对传统的分代回收算法,在性能上会有一些损失。

算法详解

JVM调优总结(九)-新一代的垃圾回收算法

G1可谓博采众家之长,力求到达一种完美。他吸取了增量收集优点,把整个堆划分为一个一个等大小的区域(region)。内存的回收和划分都以 region为单位;同时,他也吸取了CMS的特点,把这个垃圾回收过程分为几个阶段,分散一个垃圾回收过程;而且,G1也认同分代垃圾回收的思想,认为不同对象的生命周期不同,可以采取不同收集方式,因此,它也支持分代的垃圾回收。为了达到对回收时间的可预计性,G1在扫描了region以后,对其中的活跃对象的大小进行排序,首先会收集那些活跃对象小的region,以便快速回收空间(要复制的活跃对象少了),因为活跃对象小,里面可以认为多数都是垃圾,所以这种方式被称为Garbage First(G1)的垃圾回收算法,即:垃圾优先的回收。

回收步骤:

初始标记(Initial Marking)

G1对于每个region都保存了两个标识用的bitmap,一个为previous marking bitmap,一个为next marking bitmap,bitmap中包含了一个bit的地址信息来指向对象的起始点。

Tags:JVM 总结 新一代

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接