Java G1垃圾回收器 YGC和FGC 执行流程
Java G1垃圾回收器的YGC和FGC执行流程如下:
- Young GC(YGC)执行流程:
-
G1垃圾回收器首先会将Java堆内存划分为多个小块,称为Region。
-
当Java程序运行时,新创建的对象会被分配在Eden区域中。当Eden区域被填满时,G1垃圾回收器会启动YGC。
-
YGC会扫描Eden区域和Survivor区域,将不再被引用的对象标记为垃圾。生命周期较短的对象往往会在YGC中被回收。
-
存活下来的对象会被移动到Survivor区域中,并且年龄加1。如果一个对象的年龄达到了一定值,它会被转移到老年代中。
-
如果Survivor区域也被填满了,那么存活时间较长的对象会被移动到老年代中。这种情况下,可能会触发Full GC。
- Full GC(FGC)执行流程:
-
当老年代中的对象占用了大量空间时,G1垃圾回收器会触发FGC。
-
FGC会扫描整个Java堆内存,将所有不再被引用的对象标记为垃圾,并回收它们占用的内存空间。
-
在FGC过程中,G1垃圾回收器还会对各个Region的状态进行评估,以确定哪些Region的内存可以被回收,从而释放更多的空间。
-
FGC的执行时间较长,会造成较大的停顿时间。因此,G1垃圾回收器会尽可能减少FGC的触发次数
原文地址: https://www.cveoy.top/t/topic/fF5J 著作权归作者所有。请勿转载和采集!