0. 垃圾回收算法概述
标记清除算法
|
|--- 标记时间过长
| |
| |--- CMS:通过初始标记、并发标记和重新标记来拆分标记过程
|
|--- 垃圾回收后,导致内存碎片过多
|
|--- 标记压缩算法:将垃圾移动到一侧来减少内存碎片
|
|--- 标记清除算法:将垃圾复制到另一块内存中解决内存碎片
1. 标记清除算法
2. 标记复制算法
标记复制算法工作原理:将可用内存按容量划分为大小相等的两块,每次只是用其中一块。当这一块内存用完了,就将还存活的对象复制到另外一块上,然后再把已使用过的内存空间一次清除掉。Hotspot将内存分为Eden和两个Survivor。当回收时,将Eden和Survivor中还存活着的对象一次性复制到另外一块Survivor上,最后清除掉Eden和刚才用过的Survivor空间。当Survivor控件不够用时,需要依赖老年代进行分配担保。目前,HotSpot虚拟机默认Eden和Survivor的大小比例是8:1.
3. 标记压缩算法
4. CMS算法
[1] 可达性分析算法的基本思想:将"GC Roots"对象作为起点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相相连时,则证明此对象时不可用的。缺点:在检索时,需要将JVM中应用暂停,以便分析无用对象。防止在分析中有无用对象被重新引用。