【发布时间】:2015-11-05 19:59:04
【问题描述】:
垃圾回收的根源是什么?
我已将 root 的定义读为“您的程序可以访问的任何引用”,而 live 的定义是正在使用的对象,可以是局部变量、静态变量。
我对区分根对象和活动对象之间的区别有点困惑。
什么是根路径?根对象和活动对象如何工作?
有人可以详细说明吗?
【问题讨论】:
-
什么糟糕的定义:) 我将从Garbage Collection开始
-
@user177833 - 你在哪里读到这些定义?
-
该页面中对根的定义是:“您的程序可以直接访问的任何对象引用,无需通过其他对象”。这与“您编程可以访问的任何参考”大不相同。这是非常具体的,因为您的程序持有对所述托管对象的引用,并且您的程序不需要遍历堆到达根。
-
您需要将 JVM/CLR 可视化为管理堆的实际进程。进程知道的唯一对象是正在执行的线程堆栈帧集、已加载的类以及其他一些对象。这是 GC 根;堆中的所有其他对象都可以从此集合中访问或无法访问。
标签: .net garbage-collection jvm clr gc-roots