gpt4 book ai didi

.net - .NET 中的弱引用实现

转载 作者:行者123 更新时间:2023-12-03 10:15:17 27 4
gpt4 key购买 nike

我理解并欣赏 System.WeakReference 的用处.NET 框架中的类,但对实现细节感到好奇。

WeakReference 在 .NET 中是如何实现的? MSDN 详细讨论了 WeakReference 的用法,但很少有我所看到的有关其内部工作原理的细节。

CLR 如何在不阻止 GC 的情况下跟踪引用并知道在收集 Target 时清除内部句柄?它是否需要在 CLR 本身中进行特殊处理?

我主要关心的是使用 Wea​​kReferences(特别是如果使用其中许多)是否存在与使用标准对象引用不同的性能影响。

最佳答案

WeakReference 类将其对象引用移交给 GC 并返回一个句柄。每当您获得引用或检查引用是否有效时,句柄用于向 GC 请求引用。

这意味着 GC 保留了所有弱引用的列表,它必须在收集对象时更新。这也意味着每次使用弱引用都会产生一些开销。

因此,每个弱引用都意味着垃圾收集器需要做更多的工作,但另一方面,每个常规引用​​也是如此,即使它更少。您当然应该小心使用大量弱引用,但是如果您需要这样做以使内存管理与您的对象良好配合,那么这应该超过它导致的小开销。

关于.net - .NET 中的弱引用实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1095492/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com