我正在阅读有关垃圾回收的内容。正如我们所知,垃圾收集收集死对象并回收内存。 我的问题是,Collector 如何知道任何对象已死? 它使用什么数据结构来跟踪 Activity 对象?
我正在研究这个,我发现,GC 实际上会跟踪 Activity 对象并标记它们。每个未标记的对象都被视为已死。我想,有一些叫做 object-tree
的东西就是用于这个目的的。但我不知道它是如何工作的。
这是我的问题 list 。
- 什么是对象树?
- 它是如何工作的?当我们使用
new
关键字创建任何对象时,它如何影响object-tree
? - 谁维护这棵树? jvm、GC,或者这就是对象存储在堆中的方式?
最佳答案
树只是内存堆和对象之间引用的概念 View 。它不作为单独的实体存在。
而且它并不是真正的树,因为它可以包含循环,所以称它为图会更准确。在垃圾收集过程中,它以树状方式(广度优先或深度优先遍历)通过遵循引用并跳过已经访问过的引用来访问。
关于java - 垃圾收集器如何在引擎盖下工作以收集死对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31451346/