我有一个执行由时间触发的批量插入的 Windows 服务。我正在使用sharp (contrib) 架构和NHibernate。服务的内存消耗似乎随着时间的推移缓慢/线性上升。我想调查是什么原因造成的。任何人都可以这么好心并推荐一个工具吗?谢谢。
问问题
160 次
1 回答
3
有商业分析器(ANTS Profiler、DotTrace等),还有出色的SOS 调试器扩展,您可以在 Visual Studio 或 WinDbg 中使用。有很多 关于如何使用 SOS的文章。 Tess Ferrandez 的博客是一个很好的调试资源。
通常,您将使用与此类似的 SOS。第一次运行:
!EEHeap
检查堆的状态,然后
!dumpheap -stat
查看泄漏对象的类型。从那里,您可以使用
!dumpheap -type <object type>
列出对象,然后
!gcroot <object address>
对于特定对象,查看哪些根使对象保持活动状态。
但是,在这种情况下,我总是从检查 GC 性能计数器开始,以了解泄漏模式,查看哪个堆正在增长等。
于 2013-10-03T10:21:08.297 回答