前一阵被同学问到Full GC的触发场景,一时只想到了 “老年代空间不足” 的场景。事后自己检索了一些资料,这边把这个问题整理一下。
Major GC / Full GC
基于分代收集理论,目前的JVM堆内存大多分为了新生代、老年代、方法区。
JVM在进行GC时,并非每次都对上面三个内存区域(新生代、老年代;方法区)一起回收的,大部分时候回收的都是指新生代。
针对Hotspot VM的实现,它里面的GC按照回收区域又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)。
-
部分收集:不是完整收集整个Java堆的垃圾收集。其中又分为:
-
新生代收集(Minor GC / Young GC):只是新生代(Eden,s0,s1)的垃圾收集
-
老年代收集(Major GC / Old GC):只是老年代的圾收集。
-
目前,只有
CMS GC
会有单独收集老年代的行为。 -
注意,很多时候Major GC会和Full GC混淆使用,需要具体分辨是老年代回收还是整堆回收。
-
-
混合收集(Mixed GC)
-