注:以下所有内容基于JDK1.8
定义:
线程共享区域:用来保存对象实例,数组等,当堆中没有内存空间可以分配给实例,也无法扩展时,则抛出OutOfMemoryError(OOM)。
JDK1.8后将方法区从堆中移出,转移到本地内存元空间中,主要是为了防止OOM。
空间划分:
老年代(2/3FUllGC):主要保存生命周期较长的对象,一般是一些比较老的对象。
年轻代(1/3MinorGC):进一步划分为:
Eden(伊甸园8/10)区,存储新生对象,达到一定容量阈值后会进行一次垃圾回收(复制算法)
① S0(幸存者0,1/8)区,存储由伊甸园区和S1区复制而来的对象。达到一定阈值后会跟随伊甸园区进行一次垃圾回收(复制算法)
② S1(幸存者1,1/8)区,存储由伊甸园区和S0区复制而来的对象,达到一定阈值后会跟随伊甸园区进行一次垃圾回收(复制算法)
注意:以上①②步骤会循环进行,当达到一定次数后(默认好像是15次,可以自己配置),会将循环后的对象转移到老年代。
针对垃圾回收器及垃圾回收算法,后续打算专门记一篇。
—————文章为参考相关资料后纯手写,如有不同看法,请不吝指正。
—————封面来源于互联网。
标签:对象,回收,算法,复制,垃圾,JVM,伊甸园 From: https://blog.csdn.net/2301_81445306/article/details/137156826