是否有任何方法可以跟踪GC为C#.net中的特定模块分配,解除分配和检索的内存量?
我想在我的模块中找出可能的内存泄漏。我偶尔会在生产中出现系统内存异常。
答案 0 :(得分:0)
您应该使用内存分析器来分析内存分配。
我使用了JetBrains dotTrace,它有一个很好的模式,可以在不同的时间拍摄两个快照,并显示哪些对象已分配但未在这两个快照之间收集。允许轻松查找内存泄漏,您可以继续分配新实例而不收集它们。
要查看两个应用程序内存状态之间的差异,您可以 标记时间间隔的开始和结束,然后捕获a 差异快照,显示分配了多少内存和 在标记的时间间隔内释放。视图可以过滤到 仅显示实时,新对象或死对象,或新对象之间的差异 和死物。
答案 1 :(得分:0)
内存分析器是个好主意。您还可以使用PerformanceCounters
查看草图[{3}}。然后,如果难以在本地重现,您可以在您的产品环境中收集一些统计数据。
答案 2 :(得分:0)
您可以使用Visual Studio尝试.NET内存分配概要分析。 试试这篇msdn文章,向您展示http://blogs.msdn.com/b/dotnet/archive/2013/04/04/net-memory-allocation-profiling-with-visual-studio-2012.aspx的方式。 大约1/3的文章介绍了如何运行.NET内存分配探查器。
答案 3 :(得分:0)