垃圾收集器总结:

心得:垃圾收集器其实就是对内存管理的规则。不同的垃圾回收器,对内存管理的规则不同。

最初是serialGC,单线程垃圾收集器:垃圾回收线程工作时,必须STW并且必须等待垃圾收集完。其他线程才能继续运行。这种有两个问题:回收效率低、用户体验差,因为卡顿时间长。

对于回收效率问题,出现了parallelGC 并发收集器,在serialGC 的基础上改良了收集过程,开启多线程进行垃圾回收,其他过程差不多。还出现了parNew收集器,主要是用于配合CMS一起使用。parNew收集器和parallelGC差不多。还是有一个问题:如果内存比较大,则回收效率不高。

为了解决内存较大的垃圾回收场景,出现了G1收集器,G1收集器主要是围绕用户体验来的。
G1的内存管理规则:把内存分为若干个region区域,默认为2048个,然后对这些region进行管理,这样的好处就是可以在内部动态的调整年轻代和老年代的占比。

未来可能会有更大的内存,出现了ZGC垃圾收集器:可以管理4TB的内存,抛弃了分代的概念。

一、垃圾收集器发展史:

  • 单线程GC(serial)、多线程GC(parallel、parNew)、关注用户体验GC(CMS、G1)、大容量GC(ZGC)。

二、常用调优参数:

  • -X