Java垃圾回收器:从SerialGC到G1的演进/速通
Serial GC
单线程垃圾回收器,早期JVM使用的垃圾回收器,但是STW时间过长。
java -XX:+UseSerialGC -jar app.jar
JDK8之前默认
Parallel GC
多线程垃圾回收器,也就是说他有多个GC线程进行清除,追求高吞吐量(用户线程时间/总时间)
java -XX:+UseParallelGC -jar app.jar
JDK8默认
CMS GC
并发垃圾回收器,追求最短的STW的时间
将垃圾回收过程分为多个阶段
初始标记(STW)--->并发标记--->最终标记(STW)-->并发清除
java -XX:+UseConcMarkSweepGC -jar app.jar
G1
并发垃圾回收器,在回收的时候优先回收性价比高的region,响应时间敏感的场景
将垃圾回收过程分为多个阶段
初始标记 (STW) → 并发标记 → 最终标记 (STW) → 复制/搬迁 & 并发清除
java -XX:+UseG1GC -jar app.jar
控制最大停顿时间(
-XX:MaxGCPauseMillis=200
)
JDK9之前默认