目录
垃圾收集器:
新生代垃圾收集器:
Serial:
ParNew收集器:
Parallel Scavenge收集器
老年代垃圾收集器:
Serial Old收集器
Parallel Old收集器:
CMS收集器(Concurrent Mark Sweep)
G1收集器
垃圾收集器选择原理:
收集算法是内存回收的方法论,垃圾收集器是内存回收的具体实现。
新生代、老年代的收集器如下:
特点:
新生代最悠久,最基本单线程收集器:只会一个CPU或一条线程去完成垃圾收集工作停顿问题:进行垃圾收集时,必须暂停其他所有的工作线程,知道它收集结束。简单高效(对于单线程来说)
Serial/Serial Old收集器运行示意图
特点:
新生代多线程;只有它能与CMS收集器配合工作;
ParNew/Serial Old收集器运行示意图
特点:
新生代并行的多线程吞吐量优先: 吞吐量:运行用户代码时间/(运行用户代码时间+垃圾收集时间)自适应调节策略
特点:
单线程标记-整理算法
Serial/Serial Old收集器运行示意图
特点:
多线程标记-整理算法
Parallel Scavenge /Parallel Old收集器运行示意图
特点:
以获取最短回收停顿时间为目标的标记-清除算法并发收集、低停顿对CPU资源敏感无法处理浮动垃圾会产生内存碎片运作过程:
初始标记:“Stop The World”标记一下GC Roots能直接关联的对象,速度很快并发标记:“Stop The World”GC Tracing的过程。耗时长,可以与用户线程并发执行重新标记:修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,停顿时间比初始标记长,比并发标记时间短。并发清除:耗时长,可以与用户线程并发执行
特点:
并行与并发分代收集:空间整合:标记-整理、复制可预测的停顿
运行过程:
初始标记并发标记最终标记筛选回收