当Java对象在Eden区分配内存时,如果Eden区剩余空间不足以容纳新创建的对象,或者进行Minor GC后Eden区依然没有足够空间,就会触发Young Generation GC,也就是通常说的YGC,它主要回收新生代中的对象。
java对象内存空间分配过程何时触发ygc和fgc?
此外,如果在YGC过程中,老年代可用的连续空间小于新生代的某些对象大小,或者老年代空间不足,也会导致YGC无法成功完成,进而触发FGC。所以YGC主要处理新生代的内存回收,而FGC则涉及全堆的垃圾回收,通常在内存压力极大或特定条件满足时触发。
如果新创建的对象较大,直接无法放入Eden区,或者新生代中所有存活对象的大小的总和超过了老年代剩余空间,这时会尝试将对象直接放入老年代。若老年代也满了,就会触发Full GC,即FGC,这会回收整个堆内存,包括新生代和老年代。