基于java垃圾回收机制的系统中,在某些场景下,需要尽量加下gc的时间,通常会选择CMS垃圾回收器,其执行过程大致如下:
此外还有其他的类似功能的垃圾回收器,如C4垃圾回收器:Concurrent Continuously Compacting Collector。
C4回收器的出现是建立在内存不在那么昂贵的基础上,此外应用线程也加入到了gc工作中,使得gc“时刻存在”,以达到降低单次gc消耗的时间。
其执行过程主要分以下三个阶段:
- 标记阶段(Marking) — 找到活动对象。
- 重定位阶段(Relocation) — 将存活对象移动到一起,以便可以释放较大的连续空间,这个阶段也可称为“压缩(compaction)”。
- 重映射阶段(Remapping) — 将活动对象的地址引用更新为被移动的对象新地址的引用。
[1]http://www.importnew.com/2410.html
[2]http://www.iteye.com/topic/1119491