java - 垃圾收集器如何在引擎盖下工作以收集死对象?

标签 java garbage-collection

我正在阅读有关垃圾回收的内容。正如我们所知,垃圾收集收集死对象并回收内存。 我的问题是,Collector 如何知道任何对象已死? 它使用什么数据结构来跟踪 Activity 对象?

我正在研究这个,我发现,GC 实际上会跟踪 Activity 对象并标记它们。每个未标记的对象都被视为已死。我想,有一些叫做 object-tree 的东西就是用于这个目的的。但我不知道它是如何工作的。

这是我的问题 list 。

  • 什么是对象树?
  • 它是如何工作的?当我们使用 new 关键字创建任何对象时,它如何影响 object-tree
  • 谁维护这棵树? jvm、GC,或者这就是对象存储在堆中的方式?

最佳答案

树只是内存堆和对象之间引用的概念 View 。它不作为单独的实体存在。

而且它并不是真正的树,因为它可以包含循环,所以称它为图会更准确。在垃圾收集过程中,它以树状方式(广度优先或深度优先遍历)通过遵循引用并跳过已经访问过的引用来访问。

http://en.wikipedia.org/wiki/Tracing_garbage_collection

关于java - 垃圾收集器如何在引擎盖下工作以收集死对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31451346/

相关文章:

java - 在 txt 文件上写入文本及其方法

java - 在 Eclipse 中运行 java 程序时更改文件

java - 并发标记和清除算法详细信息

Android 应用程序暂停 - 垃圾回收速度慢或 SQLite 性能问题?

java - 设置-XX :+DisableExplicitGC in production: what could go wrong?

java - jersey 客户端可以使用 JSON 将 JAXB 对象 POST 到服务器吗?

java - 如何高效遍历Bitmap?

java - 使用 Java 用文本包装 XML 元素?

java - 如何将字体添加到 Azure Web 应用程序 Java JVM 以供服务器端使用

java - 垃圾收集和线程