不止新生代与老年代:深入Java虚拟机堆内存布局与TLAB、卡表等优化机制

Java虚拟机的堆划分

当前,主流的Java虚拟机主要采用分代回收(Generational Garbage Collection)。分代回收,更准确地说,它是一种理念。这种理念将系统中的所有对象划分为不同的代(Generation),并根据对象的生命周期长度将其分类到相应的代中,每个代则采用适合其特性的垃圾回收算法。这种理念主要基于两个分代假设。

1)弱分代假说(Weak Generational Hypothesis):大部分对象都会在创建后不久就变得不可达。也就是说,许多对象的生命周期都很短;

2)强分代假说(Strong Generational Hypothesis):存活时间较长的对象,很可能会引用存活时间较短的对象,但反之则不然。也就是说,老的对象很少引用新的对象。

Java虚拟机将堆划分为新生代(Young Generation)和老年代(Old Generation)。其中,新生代又被划分为Eden区,以及两个大小相同的Survivor区。默认情况下,Java虚拟机采取一种动态分配的策略,根据生成对象的速率,以及Survivor区的使用情况动态调整Eden区和Survivor区的比例。


赞(0)
未经允许不得转载:小狮博客 » 不止新生代与老年代:深入Java虚拟机堆内存布局与TLAB、卡表等优化机制
分享到: 更多 (0)

联系我们