JVM-GC垃圾回收器

垃圾回收器简介

垃圾回收器 工作模式 暂停方式 回收算法 特点
Serial GC 串行 工作线程暂停,一个线程进行垃圾回收 新生代复制算法 -
Serial Old GC 串行 工作线程暂停,一个线程进行垃圾回收 老年代标记-整理算法 -
ParNew GC 并行 工作线程暂停,多个线程进行垃圾回收 新生代复制算法 Serial GC的多线程版
CMS GC 并行 用户线程和垃圾回收线程同时执行 老年代标记-清除算法 低延迟
Parallel GC 并行 工作线程暂停,多个线程进行垃圾回收 新生代复制算法 JDK8默认,低暂停,能动态调整内存分配情况。
Parallel Old GC 并行 工作线程暂停,多个线程进行垃圾回收 老年代标记-整理算法 替代串行化的Serial Old GC
G1 并行 用户线程和垃圾回收线程同时执行 整堆-分区算法 JDK9默认,在延迟可控的情况下尽可能提高吞吐量
ZGC 并行 用户线程和垃圾回收线程同时执行 整堆-分页算法 jdk11版本支持下的垃圾回收器,支持TB级别的内存,12306抢票软件一般都是TB级别的内存,STW时间不超过1ms
  • 使用命令-xx:+PrintCommandLineFlags,查看使用的垃圾收集器。
  • 使用命令-xx:+UseSerialGC,指定使用Serial GC和Serial old GC。
  • 使用命令-xx:+UseParNewGC,指定新生代使用ParNew GC。
  • 使用命令-xx:+UseConcMarkSweepGC,指定老年代使用CMSGC。
  • 使用命令-Xx:+UseParallelGC,指定新生代使用Parallel GC。
  • 使用命令-xx:UseParallelOldGC,指定老年代使用Parallel Old GC,这两个配置一个,另一个自动激活。
  • 使用命令生成GC日志文件,-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/Users/XXX/XXX.log
  • 使用https://gceasy.io/网站进行日志分析

你可能感兴趣的:(#,JVM,java,jvm,java,算法)