JVM垃圾收集算法
2021-07-14 13:14:29 24 举报
JVM垃圾收集算法
作者其他创作
大纲/内容
存活对象
为了解决效率问题,于是有了复制算法。复制算法的特点及流程如下:特点及流程:将内存区域划分为2块,每次只是用一块,分为“使用块”跟“保留块”。每次使用块满,则将使用块的存活对象复制保留块中,然后彻底清除使用块。接着互换身份,即:原使用块变成保留块,原保留块变为使用块。缺点:每次只使用其中一半,内存使用率极低。
可用内存
标记复制算法
内存整理后:
算法分为“标记”和“清除”阶段:标记存活的对象, 统一回收所有未被标记的对象(一般选择这种);也可以反过来,标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象 。它是最基础的收集算法,比较简单,但是会带来两个明显的问题:1.效率问题 (如果需要标记的对象太多,效率不高)2,空间问题(标记清除后会产生大量不连续的碎片
标记清除算法
内存整理前:
保留内存
可回收内存
即:将堆内存划分为新生代和老年代,并且根据不同年龄代的对象生命周期特点,采取不同的垃圾收集算法,以提高效率为目的。如:新生代的对象淘汰率比较高,则采用复制算法,就可以及高效率的回收内存。而老年代则因为对象存活时间比较长,采用复制算法代价会比较高,采用标记整理或者清除比较合适。下面会着重介绍这几种算法的区别
根据老年代的特点特别推出的算法,算法分为“标记”和“整理”两个阶段。标记阶段将存活对象标记起来,紧接着复制这些标记对象整理到内存的一端(连续内存),最后将除此之外的内存全部清除。
标记整理算法
垃圾收集算法
分代收集理论
0 条评论
下一页