垃圾回收机制

发布于 2023-07-30 08:01:34 字数 720 浏览 31 评论 0

GC 垃圾回收

  1. 找到内存空间中的垃圾
  2. 回收垃圾,让程序员能再次利用这个空间

别备的接触
常用的 GC 算法

1.引用技术
2.标记-清除算法

标记阶段: 把所有活动对象做上标记。
清除阶段: 把没有标记(也就是非活动对象)销毁。

标记阶段:根可以理解成我们的全局作用域,GC 从全局作用域的变量,沿作用域逐层往里遍历(对,是深度遍历),当遍历到堆中对象时,说明该对象被引用着,则打上一个标记,继续递归遍历(因为肯定存在堆中对象引用另一个堆中对象),直到遍历到最后一个(最深的一层作用域)节点。

清除阶段: 又要遍历,这次是遍历整个堆,回收没有打上标记的对象。
解决 循环引用的问题:因为两个对象从全局对象出发无法获取。因此,他们无法被标记,他们将会被垃圾回收器回收。

空闲链表:空闲链表(保存堆中所有空闲地址空间的地址形成的链表)一直遍历到尾端

GC 方式是一个定时运行的任务,也就是说当程序运行一段时间后,统一 GC,

优点:

1. 解决循环饮用这种现象
2. 只有打和不打两个标记

缺点:

1.造成碎片化(有点类似磁盘的碎片化
2.再分配时遍次数多,如果一直没有找到合适的内存块大小,那么会遍历空闲链表(保存堆中所有空闲地址空间的地址形成的链表)一直遍历到尾端

复制

1. 只把某个空间的活动对象复制到其他空间。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

0 文章
0 评论
23 人气
更多

推荐作者

qq_E2Iff7

文章 0 评论 0

Archangel

文章 0 评论 0

freedog

文章 0 评论 0

Hunk

文章 0 评论 0

18819270189

文章 0 评论 0

wenkai

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文