java - 了解java中的垃圾收集器

标签 java garbage-collection

我正在尝试了解并发标记和扫描 GC 算法。我正在阅读以下内容explanation : enter image description here

问题:那么扫描实际上意味着什么?它是实际的垃圾收集(回收无法访问的对象并释放内存吗?)?或者它意味着不同的东西?

如果是这样,如果我们省略扫描阶段,我们会遇到什么样的麻烦?

最佳答案

在链接的解释中,实际上没有描述“扫描”步骤。

粗略地说:

  1. 标记:找到“根”对象,并执行对象图的遍历,标记遍历过程中触及的所有对象。
  2. 清理:从 A 到 Z 遍历堆并删除所有未标记的对象(清理清理堆;或者清理> 堆中未标记的对象)。

如果您不进行清理,则不会释放内存,只是将其标记为空闲(想想操作系统中的“垃圾箱” ->标记 = 放入垃圾箱;清理 = 从垃圾箱中删除)。

关于java - 了解java中的垃圾收集器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46671748/

相关文章:

java - 如何在java中每1秒检查一些条件直到为真

java - Java 中 PDU 到文本的转换

html - html5 的垃圾收集

java - 私有(private)方法调用的垃圾回收

Ruby 强制垃圾收集无法按预期工作

java - 仅当外部类参数化时内部接口(interface)才会生成错误?为什么?

java - 如何在 Java 中查找重载的方法?

java - jsp中Taglib继承:include

java - 立即从堆中删除对象

c - 垃圾收集不是为 C 设计的,是否有特定原因?