![](/img/trans.png)
[英]Is it a good idea to implement a C# event with a weak reference under the hood?
[英]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.