32.MinorGC、MajorGC和FullGC的对比

1.MinorGC、MajorGC和FullGC的对比

1.JVM在进行GC的时候,并不是每次都是对新生代、老年代、永久代/元空间一起回收的,大部分的回收都是值新生代。
2.针对HotSpot VM的实现,它里面的GC按照回收区域可以分为两种类型:一种是部分收集(Partial GC),一种是整堆收集(Full FC)

  • 部分收集:不是完整收集整个堆。其中又分为:
    a) 新生代收集(Minor GC / Young GC):只有新生代的垃圾收集。
    b) 老年代收集(Major GC / Old GC):只有老年代的收集。
    目前,只有CMS GC才会有单独收集老年代的行为。
    很多时候Major GCFull GC会混淆使用,需要具体分辨是老年代回收还是整堆回收。
    c) 混合收集:收集整个新生代以及部分老年代的垃圾。
    目前只有G1 GC有这种行为。
  • 整堆收集(Full GC):收集整个java堆和方法区的垃圾

32.MinorGC、MajorGC和FullGC的对比

2.GC触发机制

1.年轻代GC(Minor GC)触发机制。

  • 当年轻代空间不足的时候,就会触发Minor GC。这里的年轻代指的是Eden区,只有Eden区满的时候才会触发Minor GCS0区或者S1区满是不会触发GC的。
  • Minor GC发生的很频繁,回收速度也很快。
  • Minor GC会引发STW(Stop the World),暂停其他用户线程,等待垃圾回收结束,用户线程才会恢复运行。

32.MinorGC、MajorGC和FullGC的对比
2.老年代GC(Major GC)触发机制。
32.MinorGC、MajorGC和FullGC的对比
3.Full GC触发机制。
32.MinorGC、MajorGC和FullGC的对比