我正在阅读有关垃圾收集的内容。众所周知,垃圾收集会收集死亡对象并回收内存。
我的问题是,Collector 如何知道任何对象已死亡?
它使用什么数据结构来跟踪活动对象?
我正在研究这个问题,我发现GC实际上会跟踪活动对象,并标记它们。每个未标记的对象都被视为死亡。我想,有一种东西叫做object-tree
用于此目的。但我不知道它是如何运作的。
这是我的问题清单。
- 什么是对象树?
- 它是如何运作的?当我们创建任何对象时
new
关键字,它如何影响它object-tree
?
- 谁维护这棵树? jvm、GC,或者这就是对象存储在堆中的方式?
树只是内存堆和对象之间引用的概念视图。它并不作为一个单独的实体存在。
它并不是真正的树,因为它可以包含循环,因此将其称为图会更准确。在垃圾收集期间,通过遵循引用并跳过已经访问过的引用,以树状方式(广度优先或深度优先遍历)访问它。
http://en.wikipedia.org/wiki/Tracing_garbage_collection http://en.wikipedia.org/wiki/Tracing_garbage_collection
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)