三句话捋清楚java垃圾收集器

  • 无论 -XX:+UseParallelGC 还是 -XX:+UseParallelOldGC ,新生代都是 ParallelGC,即 Parallel Scavenge,区别在于年老代,前者是串行,后者是并行。

  • 无论 -XX:+UseConcMarkSweepGC 还是 -XX:+UseParNewGC ,新生代都是ParNew,区别在于年老代,前者是CMS(当然,他失败了就会执行serialold),后者是串行。

  • -XX:+UseSerialGC 和 -XX:+UseG1GC 就好理解了,前者都是串行,后者都是G1.

再说三句:

  • UseParNewGC java8 已废弃

  • UseConcMarkSweepGC java9已废弃

  • 总结前两句,ParNew不受待见,再说多你就晕了。

最后啰嗦一句,如果觉得标题党,那就忽略这一句:

不要说jdk x默认的垃圾收集器是什么,与jdk发行版有关,同样的代码使用jdk8同一子版本测试在mac是parallel,在centos是serial。

java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

你可能感兴趣的:(Java)