1

Parallel Collector

  • A、ParNewGC(新生代),-XX:+UseParNewGC,是Serial的多线程版,

  • B、ParallelGC(新生代),-XX:+UseParallelGC,多线程版,但是吞吐量优先

  • C、ParallelOldGC(年老代),-XX:+UseParallelOldGC,ParallelOldGC的FullGC的动作为清空整个heap堆中的垃圾对象,清除Perm区中已经被卸载的类信息,并进行压缩。而ParallelGC的FullGC,是清除heap中的部分垃圾对象,并进行部分的空间压缩。

-XX:ParallecGCThreads

如果CPU core<=8,则为CPU的核数,否则3+(cpu core * 5)/8

悲观策略

在向Eden区申请空间时,如果Eden区不够,那么看当前申请空间是否大于Eden区的一半,如果大于则直接在old区分配,否则触发MinorGC,执行以下判断:

采用Parallel GC的情况下,当YGC触发时,会有两个检查:

  • 1、在YGC执行前,min(目前新生代已使用的大小,之前平均晋升到old的大小) > 旧生代剩余空间大小 ?

  • 不执行YGC,直接执行Full GC : 执行YGC;

  • 2、在YGC执行后,平均晋升到old的大小 > 旧生代剩余空间大小 ? 触发Full GC : 什么都不做。

当old区或者perm区不足时会触发FullGC,如果配置了参数ScavengeBeforeFullGC,则在FullGC之前会先触发MinorGC。


codecraft
11.9k 声望2k 粉丝

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很自豪告诉世人,我曾经将代码注入生命去打造互联网的浪潮之巅,那是个很疯狂的时代,我在一波波的浪潮上留下...


« 上一篇
CMS收集器
下一篇 »
javaagent学习