文章目录
1、GC分类与性能指标
(1)垃圾收集器分类
- 按照碎片处理方式:
压缩式垃圾回收器:
- 压缩式垃圾回收器会在GC后,对存活对象进行压缩整理,消除回收后的碎片。
- 空间再分配:指针碰撞
非压缩式垃圾回收器:
- 非压缩式回收器,在回收后不进行整理操作
- 空间再分配:维护空闲列表
- 按照工作内存区间划分:年轻代垃圾收集器、老年代垃圾收集器
(2)垃圾收集器的新能指标
- 吞吐量:
- 暂停时间(关注重点):
执行垃圾收集时,程序工作线程暂停的时间。 - 内存占用:Java堆区多占用的内存大小。
- 下图描述出:吞吐量高,用户线程暂停时间就长;用户线程暂停时间短,系统吞吐量就低;
2、不同的垃圾回收器概述(面试)
(1)7款经典的垃圾收集器
-
串行回收器:Serial(串行)、Serial Old;
-
并行回收器:ParNew、Parallel(并行的) Scavenge、Parallel Old;
-
并发回收器:CMS、G1;
-
垃圾回收器的搭配
-
查看默认的垃圾回收器的参数:
-XX:+PrintCommandLineFlags
3、Serial回收器:串行回收
- Serial 收集器是32位操作系统hotspot虚拟机在client模式下的默认新生代垃圾收集器
- Serial 采用了复制算法,串行回收,STW机制执行内存回收
- 还提供了Serial Old ,它用于回收老年代,也采用了串行回收、STW等机制,内存回收则使用标记-压缩算法;在Server模式下,Serial Old还作为CMS垃圾回收器的后备方案
- 设置使用SerialGC垃圾回收器参数
-XX:+UserSerialGC ———— 新生代使用Serial GC; 老年代使用Serial Old GC
小结:
这种垃圾垃圾回收器在工作期间会完全停止用户线程,在交互性强的JavaWeb中不使用这个串行垃圾回收器了;