虚拟机3.3垃圾收集算法

来源:互联网 发布:吉他简谱制作软件 编辑:程序博客网 时间:2024/06/08 03:15

3.3.1 标记-清除算法
先标记、再清除。缺点是标记和清除的效率不高,容易留下内存碎片,在分配较大对象时不得不再次进行GC。
3.3.2 复制算法
将内存两等分,每次使用其中一半,在GC前,将存活的对象从A复制到另一半B,然后将A全都清空。不会有碎片,但是使用率低。
用这种算法可以回收新生代,新生代98%‘朝生夕死’,将内存分为三块,第一块80%空间存放新生代,第二块10%空间存放Survivor,第三块10%是GC时可以把存活的对象copy到这里,相当于利用率达90%。但这只是应对一般场景,因此Survivor空间不够用时,需要老年代内存进行‘分配担保’。当存活对象占用内存较大,可将一些活的对象变成老年代,进入老年代内存。
3.3.3 标记-整理算法
先标记-清除,在GC前将对象向内存一端移动,消除碎片内存。
3.3.4 分代收集算法
当前虚拟机大都采用分代收集算法,根据对象存活周期将内存分成几块。一般将堆分成老年代和新生代,根据各个年代的特点采用适当的收集算法。对于新生代用复制算法,老年代用标记-清理/整理算法进行回收。

原创粉丝点击