我是靠谱客的博主 整齐樱桃,最近开发中收集的这篇文章主要介绍垃圾回收算法 定义 对象何时可回收 标记-清除: 复制: 标记-整理: ,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

定义

   首先,如何定义垃圾有两种方式,一是引用计数,(无法解决循环引用);另一种就是可 达性分析(GC Root)

对象何时可回收

   显示的把某个引用置位 NULL 或者指向别的对象;局部引用指向的对象;弱引用关联的对象

标记-清除:

   此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍 历整个堆,把未标记的对象清除。此算法需要暂停整个应用。优点就是减少停顿时间,但是 缺点是会造成内存碎片

复制:

   这种方法不涉及到对象的删除,只是把可用的对象从一个地方拷贝到另一个地方,因此 适合大量对象回收的场景,比如新生代的回收,每次只处理正在使用中的对象,因此复制成 本比较小,同时复制过去以后还能进行相应的内存整理,不过出现"碎片"问题。当然,此算 法的缺点也是很明显的,就是需要两倍内存空间

标记-整理:

   这种方法可以解决内存碎片问题,但是会增加停顿时间,此算法结合了"标记-清除"和" 复制"两个算法的优点。也是分两阶段,第一阶段从根节点开始标记所有被引用对象,第二 阶段遍历整个堆,清除未标记对象并且把存活对象"压缩"到堆的其中一块,按顺序排放。此 算法避免了"标记-清除"的碎片问题,同时也避免了"复制"算法的空间问题

最后

以上就是整齐樱桃为你收集整理的垃圾回收算法 定义 对象何时可回收 标记-清除: 复制: 标记-整理: 的全部内容,希望文章能够帮你解决垃圾回收算法 定义 对象何时可回收 标记-清除: 复制: 标记-整理: 所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部