繁体   English   中英

使用弱引用字典跟踪 c# GC 对象(以避免 memory 泄漏)是个好主意吗?

[英]Is keeping track of c# GC objects (to avoid memory leaks) with a weak reference dictionary a good idea?

我已经实现了一个 static class 和一个字典,该字典使用弱引用跟踪我的应用程序中的一些对象。

static Dictionary<Type,List<WeakReference>> Monitor;

根据请求(不在生产中)强制垃圾收集器并返回字典。 通过检查每种类型的“活动”对象的数量,我可以快速检查是否存在 memory 泄漏,因为活动对象的数量高于预期。 鉴于我制作的 class 的简单性和实用性,我想知道点网框架中是否有更好的东西来跟踪某些对象,我们称它们为“可观察的”。

每一项贡献都受到高度赞赏。

假设您不想使用分析器,那么您的方法可以工作。 但请注意,您的解决方案本身会出现 memory 泄漏,因为您添加到其中的任何 object 都会存在弱引用 object,即使在收集了 ZA6268CFDE6931ACB49 之后也是如此。 您需要定期删除不再有效的弱引用,一种方法是在添加时删除,如下所示https://www.chriswirz.com/software/weak-reference-lists-in-c-sharp 还要记住,您没有使用 ConcurrentDictionary,因此您需要控制对该结构的访问。

如果您可以生成另一个进程,您可能会成功使用分析 api。 https://docs.microsoft.com/en-us/dotnet/framework/unmanaged-api/profiling/profiling-overview

您可以生成一个附加到主机的进程,收集数据并用结果返回信号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM