2013-10-03 90 views
0

我有一個windows服務,執行時間觸發的批量插入。我正在使用sharp(contrib)架構和NHibernate。服務的內存消耗似乎隨着時間的推移緩慢/線性地上升。我想調查是什麼原因造成的。任何人都可以請這麼友善並推薦一款工具?謝謝。windows服務+ nhibernate - 尖銳的體系結構 - 內存泄漏?

+0

你清理每個觸發器之間的會話? –

+0

是的:NHibernateSession.Current.Clear(); – cs0815

回答

3

有商業分析器(ANTS Profiler,DotTrace等),但也可以從Visual Studio或WinDbg使用的優秀SOS debugger extension。有manyarticlesabouthow使用SOS。 Tess Ferrandez' blog是一個很好的調試資源。

通常,您將使用類似於此的SOS。首先運行:

!EEHeap 

檢查堆的狀態,其次是

!dumpheap -stat 

,看看有什麼是泄漏對象的類型。從那裏,你可以使用

!dumpheap -type <object type> 

列出的對象,然後

!gcroot <object address> 

特定對象,看看哪些根保持對象活着。

但是,我總是在這樣的情況下,檢查GC性能計數器開始,瞭解泄漏的模式,看看哪堆增長等