栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么是“扎根参考”?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是“扎根参考”?

它表示GC根。

通读本文,也许会有助于您的理解:

GC根本身不是对象,而是对对象的引用。GC根引用的任何对象将自动在下一个垃圾回收中保留下来。.NET中有四种主要的根:

在当前正在运行的方法的局部变量
被认为是一个GC根。这些变量引用的对象始终可以通过声明它们的方法立即访问,因此必须保留它们。这些根的生命周期可以取决于程序的构建方式。在调试版本中,局部变量的持续时间与方法在堆栈上的时间一样长。在发行版中,JIT能够查看程序结构以找出执行过程中该方法可以使用变量的最后一点,并在不再需要该变量时将其丢弃。这种策略并不总是使用,可以通过例如在调试器中运行程序来关闭。

静态变量
也始终被视为GC根。声明它们的类可以随时访问它们引用的对象(如果是公共的,则可以访问程序的其余部分),因此.NET将始终保持它们不变。声明为“线程静态”的变量仅会在该线程运行时持续存在。

如果 将托管对象通过interop传递到非托管COM +库 ,则它将也成为具有引用计数的GC根。这是因为COM
+不进行垃圾收集:它使用引用计数系统;通过将引用计数设置为0,一旦COM +库完成了该对象,它将不再是GC根目录,并且可以再次收集。

如果 对象具有终结器
,则在垃圾回收器确定该对象不再“处于活动状态”时,不会立即将其删除。相反,它成为一种特殊的根,直到.NET调用了finalizer方法。这意味着这些对象通常需要从内存中删除一个以上的垃圾回收,因为它们在第一次被发现未使用时将继续存在。

(强调我的)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/575927.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号