Windows服务+ nhibernate - 尖锐的架构 - 内存泄漏?

时间:2013-10-03 09:17:11

标签: c# .net nhibernate windows-services s#arp-architecture

我有一个Windows服务,可以执行由时间触发的批量插入。我正在使用sharp(contrib)架构和NHibernate。随着时间的推移,服务的内存消耗似乎缓慢/线性上升。我想研究是什么导致这种情况。有谁可以这么善良并推荐一个工具?感谢。

1 个答案:

答案 0 :(得分:3)

有商业资料分析器(ANTS ProfilerDotTrace等),还有优秀的SOS debugger extension,可以在Visual Studio或WinDbg中使用。有many articles about how来使用SOS。 Tess Ferrandez' blog是一个很好的调试资源。

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

!EEHeap

检查堆的状态,然后是

!dumpheap -stat

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

!dumpheap -type <object type>

列出对象然后

!gcroot <object address>

对于特定对象,查看哪些根保持对象存活。

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