首页 > 编程知识 正文

垃圾回收基本原理,垃圾回收机制

时间:2023-05-06 09:34:32 阅读:15802 作者:2343

1常见垃圾回收算法常见的垃圾回收算法有:引用计数法、标记清除法、标记压缩法、复制清除法、分带算法等

1.1参照计数法1.1.1原理假设有某个对象a。 只要某个对象对a存在参照,a的参照计数器1在参照失败时就是参照计数器-1。 如果a的参照计数器的值为0,那就是垃圾,可以回收。

1.1.2优缺点优点:

*由于实时性强,所以不需要在内存不足后开始回收。 *在垃圾回收过程中不需要挂起对象。 申请内存时,如果内存不足,直接向成员输出报告。 *区域性:更新对象的计数器时,仅影响该对象,而不是扫描所有对象。缺点:

*每次引用对象时都需要更新计数器,需要一点时间。 之所以浪费CPU资源,是因为内存足够。 即使如此,在运行时也会进行计数器的统计。 *无法解决循环引用问题。 (最大缺陷) 1.2标识去除算法两个步骤:

*标记:从节点标记非垃圾对象(可达性算法)。

*清除:清除所有未标记的对象

1.2.1原理

1.2.2优缺点优点:

要解决轮转问题缺点:,效率很低,必须遍历所有对象才能进行标记和清除。 此外,对于要求交互性的APP应用程序来说,GC的体验太差了,因为如果不停止APP应用程序标记,它就不准确(程序将运行并不断生成对象)。 内存碎片太多,内存不一致。 1.3标签压缩算法和标记清除类似:先从根节点开始对非垃圾对象进行标记,在清理阶段将存活的对象压缩到内存的一端,然后清理边界以外的垃圾

1.3.1原理

1.3.2优缺点和标记清除算法一样

算法将原有的空间一分为二,每次只使用其中的一块,在垃圾回收时将正在使用的对象移到另外一块空间中,然后清除该空间,交换两个内存对象的角色,完成垃圾回收。如果垃圾对象较少,而非垃圾对象较多则不适合

应用场景JVM年轻一代的内存空间。

1.3.3优缺点优点:

垃圾对象多时高效无内存碎片缺点:垃圾对象少时不适用:老年人区域内存空间分配的内存空间同一时间只能使用一半,内存使用率低的1.4代算法3330

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。