文章目录
一、Young GC
1 什么是Young GC?
Young GC也成为了Minor GC,大家都知道这是新生代的GC
2 什么条件会触发Young GC
Young GC一般是在新生代的Eden区域满了之后就会触发,采用标记复制算法来进行垃圾回收
二 Full GC
1 什么是Full GC?
Full GC指的是对新生代、老年代、永久代的全体内存空间的垃圾回收,也有时候指老年代的GC,虽然Old GC是专门指老年代的回收,不同的名词如何定义每个人都有自己的看法
2 什么条件会触发Full GC
1)发生Young GC之前进行检查,如果老年代可用的连续空间 < 新生代历次Young GC后升入老年代的对象总和的平均大小,说明本次Young GC后可能升入老年的对象大小,可能超过了老年代当前可用的内存空间
此时需要触发一下Old GC给老年代腾出更多的空间,然后再执行Young GC
2)执行Young GC之后有一批对象需要放入老年代,此时老年代没有足够的空间存放,需要触发Old GC
3)老年代内存利用率超过了92%,直接触发Old GC,这个比例可用通过参数调整
三 Major GC
1 什么是Major GC?
这个词一般用的比较少,容易混淆,有人把Major GC与Old GC等价,有人把Major GC与Full GC等价,具体情况需要具体确认
四 Mixed GC
Mixed GC 是G1中特有的概念,主要是说在G1中,一旦老年代占据堆内存的45%了,就要触发Mixed GC,对新生代和老年代都会进行GC