GC的触发:
运行时数据区中最大的区域的堆内存,我们说堆是GC主要处理的区域,所以又叫GC堆。如果要知道GC的触发过程那么对内存还需要继续划分
对象的创建和上面的区域发生密切的关系,其中也会在上面的区域触发GC
分析GC触发的过程:
1.当创建一个新对象的时候需要为新对象申请空间,在伊甸园区申请,但是需要判断一点园区的空间是否充足,充足则申请成功,如果不充足则触发MinorGC回收不活跃的对象(不经常使用的对象)【采用的算法是复制算法】,回收之后再判断一点园区空间是否充足,充足则申请成功。【GC时把存活的对象从一块空间(From space)复制到另一块空间(To space),再把原先的那块内存(Form space)清理干净,最后调换From space 和 To space 的逻辑角色(这样下一次 GC 的时候还可以按这样的方式进行),当启动MinorGC 的时候会停止应用线程,启动GC回收线程,这个线程是一个守护线程】
2.如果依然不充足,则判断存活区空间是否充足,充足则将伊甸园区的部分活跃对象移到存活区,伊甸园区的空间申请成功
3.如果村获取的空间不足则判断老年代,如果充足则将存活区的部分活跃对象保存到老年代,之后将伊甸园区的活跃对象保存到存活区,空间申请成功
4、如果老年代的空间不充足则触发Full G