三种假说
- 弱分代假说:绝大多数对象都是朝生夕灭的
- 强分代假说:熬过越多次垃圾收集过程的对象就越难以消亡
- 跨代引用假说:跨代引用相对于同代引用来说仅占极少数
三种假说是Java虚拟机分代设计的理论基础
- 根据弱分代假说和强分代假说,虚拟机设计将堆内存空间划分为不同的区域,对象年龄的不同放置在不同的区域中;
- 跨代引用假说是实现跨代引用的对象垃圾回收的理论,在对跨代引用对象进行垃圾回收时,不应该扫描整个老年代。
堆空间分代
经典的分代设计
划分新生代(Young Generation)和老年代(Old Generation)。
Appel式回收
新生代继续细分为伊甸园(Eden)空间和两块较小的Survivor空间。HotSpot虚拟机的Serial、ParNew、Parallel Scavenge等新生代收集器默认Eden和Survivor大小比例为8:1。
如下图Java8 HotSpot虚拟机GC日志,可以清楚看见新生代(PSYoungGen)被分为Eden空间(eden)和两块Survivor(from和to)空间,还有老年代(ParOldGen)和元空间(Metaspace)。
![](https://img.haomeiwen.com/i19588241/4bb2439d3a9c445a.png)
网友评论