windows service + nhibernate - sharp architecture - memory l

本文关键字:architecture memory sharp windows nhibernate service | 更新日期: 2023-09-27 18:33:38

我有一个Windows服务,可以执行由时间触发的批量插入。我正在使用尖锐(contrib)架构和NHibernate。服务的内存消耗似乎随着时间的推移缓慢/线性上升。我想调查一下是什么原因造成的。任何人都可以如此友善并推荐一个工具吗?谢谢。

windows service + nhibernate - sharp architecture - memory l

有商业探查器(ANTS Profiler,DotTrace等),还有优秀的SOS调试器扩展,你可以从Visual Studio或WinDbg使用。有很多关于如何使用 SOS 的文章。Tess Ferrandez的博客是关于调试的绝佳资源。

通常,您将使用与此类似的 SOS。首次运行:

!EEHeap

以检查堆的状态,然后

!dumpheap -stat

以查看泄漏对象的类型。从那里,您可以使用

!dumpheap -type <object type>

列出对象,然后

!gcroot <object address>

对于特定对象,查看哪些根使对象保持活动状态。

但是,在这种情况下,我总是从检查GC性能计数器开始,以了解泄漏模式,查看哪个堆正在增长等。