垃圾收集器种类
1.1 Serial
Serial顾名思义为串行垃圾收集器,用于新生代的垃圾回收。由于新生代内存区域是采用分区的,所以Serial垃圾收集器采用的算法为"标记-复制"算法。
图1 Serial串行收集器
1.2 ParNew
ParNew顾名思义为并行垃圾收集器,用于新生代的垃圾回收。由于新生代内存区域是采用分区的,所以ParNew垃圾收集器采用的算法为"标记-复制"算法。
图2 ParNew并行收集器
1.3 Parallel Scavenge
Parallel Scavenge顾名思义为并发垃圾收集器,用于新生代的垃圾回收。由于新生代内存区域是采用分区的,所以ParNew垃圾收集器采用的算法为"标记-复制"算法。但是与ParNew收集器不同的是,该垃圾收集器注重程序的执行效率,减少STW(Stop The World)时间,采用工作线程与回收线程同时执行。
图3 Parallel Scavenge并发收集器
1.4 Serial Old
Serial Old顾名思义为串行垃圾收集器,用于老年代的垃圾回收。老年代只有一块内存区域,该垃圾收集器设计的是"标记-整理"算法。
图4 Serial Old串行收集器
1.5 Parallel Old
Parallel Old顾名思义为并行垃圾收集器,用于老年代的垃圾回收。老年代只有一块内存区域,该垃圾收集器设计的是"标记-整理"算法。
图5 Parallel Old并行收集器
1.6 CMS
CMS(Concurrent Mark Sweep)顾名思义为并发标记清除收集器,用于老年代的垃圾回收。但是与Parallel Old收集器不同的是,该垃圾收集器注重程序的执行效率,减少STW(Stop The World)时间,采用工作线程与回收线程同时执行。
图6 CMS并发收集器
1.7 G1
G1与上面的6中垃圾收集器不同,G1是一种用于新生代和老年代的收集器。引入了Region思想,默认为2048个Region。对于大对象,超过50%的对象,就放在老年代(横跨多个Region,拼接起来的意思)。采用"标记-整理"算法。
图7 G1收集器
以上是垃圾收集器的所有内容,欢迎共鸣!