深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化
上QQ阅读APP看书,第一时间看更新

3.1 分代堆内存管理概述

在2.3.4节介绍分代回收时,提到分代有一些问题需要回答,最简单的问题是分代边界是否固定?串行回收采用边界固定的分代方法,将整个堆空间划分为两个代:新生代和老生代。在内存管理方面,新生代采用复制算法进行垃圾回收,整个堆空间采用标记压缩算法进行垃圾回收,复制算法采用的是变异的Cheney复制算法。整个堆内存管理示意图如图3-1所示。

图3-1 串行回收堆空间管理示意图

串行回收的特点如下:

1)内存是连续的。

2)新生代和老生代边界固定,边界在JVM启动时确定

3)新生代空间划分为3个子空间,分别是Eden、From、To空间,并且Eden、From、To空间的大小在启动时确定

4)新生代空间的垃圾回收采用的是复制算法

5)整个堆空间的垃圾回收采用的是标记压缩算法。注意,标记压缩算法针对的是整个堆空间,串行回收中没有只回收老生代的算法,具体原因后文讨论。