64.7款经典的垃圾收集器以及它们之间的组合关系、如何查看默认的垃圾回收器

1.七款经典的垃圾收集器

经典的垃圾回收器又如下7种:
在这里插入图片描述
如下图所示,是经典的垃圾回收器和垃圾分代之间的关系。
Serial GCParallel Scavenger GC以及ParNew GC只能收集年轻代。
Serial Old GCParallel Old GC以及CMS GC只能收集老年代。
G1 GC既能收集年轻代又能收集老年代。
在这里插入图片描述

2.垃圾收集器之间组合关系

一款年轻代的垃圾收集器总是对应着一款老年代的垃圾收集器。
下面的图更新到了JDK14

  1. 先将虚线看成是实线,一款年轻代的垃圾收集器对应着两款老年代的垃圾收集器。比如说新生代使用Serial GC,老年代可以使用CMS GC或者Serial Old GC
  2. 在老年代,图中的CMS GC还对应着Serial Old GCSerial Old GCCMS GC的后备方案,因为CMS GC是并发的垃圾收集器,在进行垃圾回收的时候,用户线程还在工作,用户线程可能还在制造垃圾,如果CMS GC垃圾回收的速度比用户线程制造垃圾的速度慢,就会回收失败;如果CMS GC失败会使用Serial Old GC作为后备方案,进行一次Full GC
  3. 红色的虚线,表示的是在JDK8中这种组合被废弃,但是还可以使用;在JDK9中就被移除了,完全不能使用这两种组合了。绿色虚线表示的是,JDK14中,这种组合被废弃了。
  4. CMS GC在JDK14中被移除了。
    在这里插入图片描述
    在这里插入图片描述
    JDK8中默认的组合是Parallel Scavenger GCParallel Old GCJDK9以后默认的垃圾回收器是G1 GC
    没有哪一种垃圾回收器可以绝对的说是最好的,不同的场景选择不同的垃圾回收器会更好。

3.查看默认的垃圾收集器

在这里插入图片描述
两种方式:

  1. 执行程序的时候,在eclipseJVM参数中加入-XX:+PrintCommandLineFlags
  2. 通过命令行的方式: jinfo -flag 相关垃圾回收器 java程序进程ID在这里插入图片描述
    输出的结果为-XX:+UseParallelGC,+号表示的是使用了ParallelGC。如果是减号,就表示的是没有使用。

更多JVM文章请访问我的JVM专栏:
https://blog.csdn.net/u011069294/category_10113093.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值