Parallel Collector

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。

你可能感兴趣的:(jvm)