java8默认使用的垃圾收集器

1 篇文章 0 订阅
1 篇文章 0 订阅

先说结论:在JDK7u4开始的JDK7u系列与JDK8系列开始,HotSpot VM在选择使用ParallelGC时,会默认开启-XX:+UseParallelOldGC,即会使用Parallel Scavenge + Parallel Old组合。

具体可见这篇文章

同时,在官方文档中,也有相关描述,点击此处可见原文

----------------------------------------------------------------------------------------------------------------------------------------------

以下是过程,没时间的朋友可忽略。

最近在读《深入理解java虚拟机:JVM高级特性与最佳实战》,于是想看看自己电脑的jvm使用的垃圾收集器。百度一番之后,使用命令:java -XX:+PrintCommandLineFlags -version。得到如下结果:

对照书中参数表可知,使用的垃圾收集器组合为:Parallel Scavenge + Serial Old (PS MarkSweep)。

由jconsole.exe也可得到相同的结论。

但是在实际项目里,启动命令中我添加-verbose:gc -XX:+PrintGCDetails参数,得到如下结果:

[GC (Allocation Failure) [PSYoungGen: 65024K->7565K(75776K)] 65024K->7581K(249344K), 0.0093773 secs] [Times: user=0.05 sys=0.00, real=0.01 secs] 
[GC (Metadata GC Threshold) [PSYoungGen: 68943K->10178K(75776K)] 68959K->10266K(249344K), 0.0083993 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
[Full GC (Metadata GC Threshold) [PSYoungGen: 10178K->0K(75776K)] [ParOldGen: 88K->9852K(111104K)] 10266K->9852K(186880K), [Metaspace: 20647K->20646K(1067008K)], 0.0285451 secs] [Times: user=0.19 sys=0.00, real=0.03 secs] 

由ParOldGen可看出老年代使用的是Parallel Old。这与跟命令行得到的结论不一致。百度之后,找到这样一篇文章,由此得出本文最开始的结论。而官方文档也对此有所说明。当我在启动命令中添加:-XX:-UseParallelOldGC后:

[Full GC (Metadata GC Threshold) [PSYoungGen: 10091K->0K(75776K)] [PSOldGen: 88K->9733K(109056K)] 10179K->9733K(184832K), [Metaspace: 20543K->20543K(1067008K)], 0.0282343 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]

说明在使用ParallelGC时,的确开启了UseParallelOldGC。

以上是本人的观点,如有错误,还望指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值