gpt4 book ai didi

Java:对 CMS 垃圾收集器感到困惑

转载 作者:行者123 更新时间:2023-12-02 02:24:15 25 4
gpt4 key购买 nike

我知道CMS垃圾收集器使用标记清除算法,我很好奇它是如何标记对象的。

CMS初始标记:为什么标记可达对象而不标记不可达对象?

最佳答案

垃圾收集器的任务是通过遵循任何访问器步骤链来查找程序无法再访问的对象,并回收它们占用的内存。

Mark-Sweep GC 的做法正好相反:它首先找到所有仍然可以到达的对象,然后回收所有其他对象的内存。

简化的标记-清除算法(当然真正的算法要复杂得多):

  • 从所有可直接访问的引用文献开始,例如堆栈上的局部变量(来自所有尚未完成的方法调用的参数和局部变量)、静态字段等。
  • 标记它们指向的对象。
  • 递归地检查新标记的对象。标记其字段引用的对象。
  • 重复此操作,直到不再获得新标记。
  • 逐个对象地循环内存并回收每个对象的内存而不带标记。
  • 最后删除所有标记。

关于Java:对 CMS 垃圾收集器感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48026790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com