JVM
年轻代:老年代 1:2(独生子)
伊甸园:幸存区 8:1:1 (两代独生子)
1.当伊甸园区域被填满,就是开始一次minor gc年轻代gc。字节码执行引擎把有根节点相关引用的对象,移到S0区域,把剩下的没有根节点相关引用的对象进行回收。
2.S0里面的代数加1.
3.当伊甸园第二次被填满时,进行第二次minor gc。伊甸园里面的对象和S0里面的对象都要进行minor gc.第二次年轻代GC之后仍然存活的对象放到s1区域。
4.所有s1里面的对象代数加一。
4.当伊甸园第三次被填满时,进行第三次minor gc.所有年轻代的对象都要进行minor gc.GC之后的对象放到s0里面。
5.所有s0里面的对象代数加一。
6.此后minor gc都对整个年轻代进行minor gc.gc之后的对象在s0 <>s1之间移动。
7.当对象的代数达到15代时,这个对象会被放到老年代里面。
8当老年代的内存被占满时,字节码执行引擎,会进行一次full gc.当能够回收对象创造可用空间时,minor gc》full gc这个流程继续。
9.当full gc无法回收老年代里的对象时,年轻代还往老年代移动对象,就会出现oom的现象。out of memoryerror
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异