04
2020
04

你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点。

Serial、parNew、ParallelScavenge、SerialOld、ParallelOld、CMS、G1 


CMS:

一、初始标记:此时标记需要用户线程停下来;

二、并发标记:此时标记可以和用户线程一起运行;

三、重新标记:此时标记需要用户线程停下来,主要母的是为了对并发标记的垃圾进行审核;

四、并发清除:与用户线程一起与运行进行垃圾清除;

缺点:

     1、CMS收集器对cpu资源非常敏感;

     2、CMS收集器无法清除浮动垃圾;


     3、cms基于标记清除的算法实现的,所以内存碎片会产生过多。


G1收集器:


    1、初始标记:标记GC Root能直接关联的对象,并且修改TAMS的值,让下一阶段的用户进行并发运行是,能够正确运用Region创建新对象,这阶段需要停顿,但停顿时间很短


   2、并发标记:从GC Root开始对堆进行可达性分析,找出存活的对象,这段耗时较长,但可以与用户线程并发执行。


    3、最终标记是为了修正在并发标记阶段因用户程序继续运作导致标记产生变动的那一部分的标记记录,虚拟机将这部分标记记录在线程Remembered Set中,这阶段需要停顿线程,但是可并行执行。


   4、筛选回收:首先对各个Region的回收价值和成本进行排序,根据用户所期待的GC停顿时间来制定回收计划,这个阶段也可以与用户线程并行执行,但由于只回收一部分的Region,时间是用户可控制的,而且停顿用户线程将大幅度提高收集效率。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。