java垃圾回收之CMS

来源:互联网 发布:矩阵分解 编辑:程序博客网 时间:2024/06/05 10:52
CMS:

Concurrent mark sweep collector(并发标记清除收集器)

主要被用来收集老年带的未被使用对象

cms从java 1.4.1开始出现,在Oracle HotSpot JVM被使用 。

但是新出现的Garbage-first collector(G1)开始取代了CMS

在垃圾回收中使用CMS标记清除算法,你需要添加下面这行property到jvm的命令行中 -XX:+UseConcMarkSweepGC 

CMS收集器过程

CMS的GC过程有6个阶段(4个并发,2个暂停其它应用程序):
初次标记:为手机应用程序对象暂停其它应用。
并发标记:从初次标记收集到的‘根’对象引用开始,遍历所有能被引用的对象。
并发预清理改变当运行第二阶段时,由应用程序线程产生的对象引用,以更新第二阶段的结果。
重新标记:由于并发预处理是并发的,对象引用可能发生进一步变化。因此,应用程序线程会再一次被暂停以更新这些变化,并且在进行实际的清理之前确保一个正确的对象引用视图。这一阶段十分重要,因为必须避免收集到仍被引用的对象。
并发清理:所有不再被应用的对象将从堆里清除掉。
并发重置:收集器做一些收尾的工作,以便下一次GC周期能有一个干净的状态。