java 虚拟机垃圾回收算法

来源:互联网 发布:mac系统锁定快捷键 编辑:程序博客网 时间:2024/04/28 01:56

垃圾回收算法 主要作用在堆上

1.标记-清除算法

标记-清除算法分为两个阶段:标记阶段和清除阶段。标记阶段的任务是标记出所有需要被回收的对象,清除阶段就是回收被标记的对象所占用的空间

2.复制算法(Coping)

为了解决Mark-Sweep算法的缺陷,Copying算法就被提了出来。它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,

就将还存活着的对象复制到另外一块上面,然后再把已使用的内存空间一次清理掉,这样一来就不容易出现内存碎片的问题

3.标记-整理算法(Mark-Compact)

为了解决Copying算法的缺陷,充分利用内存空间,提出了Mark-Compact算法。该算法标记阶段和Mark-Sweep一样,但是在完成标记之后,它不是直接清理

可回收对象,而是将存活对象都向一端移动(整理),然后清理掉端边界以外的内存。具体过程如下图所示

4.分代回收算法(Generational Collection)

新生代和老年代:新生代由于存活对象少,使用复制算法,老年代由于对象存活率高,无额外空间担保,使用“标记——清除”或“标记——整理”算法。

原创粉丝点击