垃圾收集器
2020-08-31 15:32:02 16 举报
JVM垃圾收集器
作者其他创作
大纲/内容
G1
优点:简单高效,拥有很高的单线程收集效率缺点:收集过程需要暂停所有线程算法:复制算法适用范围:新生代
优点:在多CPU时,比Serial效率高(多线程收集器)。缺点:收集过程暂停所有应用程序线程,单CPU时比Serial效率差。算法:复制算法适用范围:新生代
新生代(采用复制回收算法)
Parallel Old收集器是Parallel Scavenge收集器的老年代版本,使用多线程和\"标记-整理算法\"进行垃圾回收。
(1)初始标记 CMS initial mark (2)并发标记 CMS concurrent mark (3)重新标记 CMS remark (4)并发清除 CMS concurrent sweep
1.初始标记(Initial Marking)2.并发标记(Concurrent Marking)3.最终标记(Final Marking4.筛选回收(Live Data Counting and Evacuation) 对各个Region的回收价值和成本进行排序,根据用户所期望的GC停顿时间制定回收计划(因为要满足用户设置的停顿时间,所以要选择性的进行回收)
ParallelScavenge
Serial Old
老年代(标记清除或标记整理)
G1(Garbadge First)G1尽可能的满足设置一个最小的停顿时间而且有着较高的吞吐量,G1已成为Java9的默认收集器。特定如下:1.并行与并发2.分代收集(仍然保留了分代的概念)3.空间整合(整体上属于“标记-整理”算法,不会导致空间碎片)4.可预测的停顿(比CMS更先进的地方在于能让使用者明确指定一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒)【使用G1收集器时,Java堆的内存布局与就与其他收集器有很大差别,它将整个Java堆划分为多个大小相等的独立区域(Region),虽然还保留有新生代和老年代的概念,但新生代和老年代不再是物理隔离的了,它们都是一部分Region(不需要连续)的集合】
ParNew
Serial Old收集器是Serial收集器的老年代版本,也是一个单线程收集器,不同的是采用\"标记-整理算法\",运行过程和Serial收集器一样。
Parallel Scavenge收集器是一个新生代收集器,它也是使用复制算法的收集器,又是并行的多线程收集器,看上去和ParNew一样,但是Parallel Scanvenge更关注系统的吞吐量 。吞吐量=运行用户代码的时间/(运行用户代码的时间+垃圾收集时间)
CMS
Paralle Old
Serial
0 条评论
回复 删除
下一页