我正在尝试尝试以编程方式准确地确定一个托管.NET代码块中存在潜在的内存泄漏,这是多么的可行。这样做的原因是隔离了一些似乎正在泄漏内存的代码块,然后使用标准分析器进一步确定泄漏的实际原因。在我的特定业务案例中,我将加载一个第三方类,它扩展了我的一个类,以检查它是否泄漏。
首先想到的方法是这样的:
当然,当前的问题是,可能会有waiting...and waiting...and在等待不确定的GC运行。如果我们跳过这个方面,那么用于确定代码块是否泄漏任何内存的计算可能会大不相同,而且不一定是准确的,因为当时可能还没有收集到一些项目。
以上这些是否似乎是我的最佳选择,试图准确地确定是否有一段代码正在泄漏内存?或者在现实生活中还有其他的工作方法吗?谢谢。
发布于 2011-06-09 13:07:38
就我个人而言,我永远不敢自己做记忆分析。我担心我要么没有完全的知识,而且这样做需要无尽的时间。
相反,我成功地使用了像红门蚂蚁记忆分析器这样的内存分析器。
发布于 2011-06-09 13:18:22
发布于 2011-06-09 13:34:08
您确实需要一个像这个一样的内存分析器:有了它,您可以:
我相信它能做你想做的事,只是不那么痛苦。它还有一些有用的过滤器,比如“显示由委托保持活动的对象”。它还可以分析来自生产系统的内存转储。
https://stackoverflow.com/questions/6299216
复制相似问题