6.1 JVM 堆内存结构
堆内存的布局与垃圾回收器有关.
传统的垃圾回收器会把堆内存划分为:老年代和年轻代,年轻代又分为
。伊甸园 Eden
·幸存区 S0,S1
如果是 G1 垃圾回收器,会把内存划分为一个个的 Region,每个 Region 都可以充当
伊甸园
幸存区
老年代
巨型对象区
6.2 垃圾回收算法
记忆三种:
1.标记-清除算法。优点是回收速度快,但会产生内存碎片
2.标记-整理算法。相对清除算法,不会有内存碎片,当然速度会慢一些
3.标记-复制算法。将内存划分为大小相等的两个区域 S0 和 S1
a.S0 的职责用来存储对象,S1 始终保持空闲
b.垃圾回收时,只需要扫描 S0 的存活对象,把它们复制到 S1 区域,然后把 S0 整个清空,最后二者互换
职责即可
c.不会有内存碎片,特别适合存活对象很少时(因为此时复制工作少)