王一三学习笔记 | 理解Java垃圾回收

来源:互联网 发布:淘宝的聚划算怎么抢 编辑:程序博客网 时间:2024/05/16 04:40

Serial GC、Parallel GC、Parallel Old GC(Parallel Compacting GC)、Concurrent Mark & Sweep GC (or "CMS")、Garbage First (G1) GC。

Young GC、Old GC、major GC、major GC、full GC。

上面这些词有没有晕。

要想搞明白上面这些词的含义,先要分清楚两个概念:垃圾回收算法、垃圾回收的具体实现

垃圾回收算法包括:“标记-清除”(Mark-Sweep)算法、“复制”(Copying)的收集算法、“标记-整理”(Mark-Compact)算法、“分代收集”(Generational Collection)算法。

垃圾回收的具体实现包括:Serial收集器、ParNew收集器、Parallel收集器、Parallel Old 收集器、CMS收集器、G1收集器。

目前,针对HotSpot VM的实现,是使用“分代收集”(Generational Collection)算法,然后再根据各个年代的特点采用最适当的收集算法,如目前常见的组合是新生代GC算法用“复制”(Copying)的收集算法,年老代GC算法用“标记-清除”(Mark-Sweep)算法。对就到收集器就是ParNew收集器和CMS收集器。

Young GC是指新生代GC,Old GC是指年老代GC,Minor GC和Major GC是俗称,Minor GC是Young GC的俗称,Major GC是Old GC的俗称。

Full GC是指针对整个新生代、老生代、元空间(metaspace,java8以上版本取代perm gen)的全局范围的GC。

但因为HotSpot VM发展了这么多年,外界对各种名词的解读已经完全混乱了,也有人说Major GC跟full GC是等价的。所以当有人说“major GC”的时候一定要问清楚他想要指的是上面的full GC还是old GC。

更细节的我就不啰嗦了,网络上都可以搜索到,我只负责把概念给大家缕顺了。


常用的收集器组合