0
我有一個windows服務,執行時間觸發的批量插入。我正在使用sharp(contrib)架構和NHibernate。服務的內存消耗似乎隨着時間的推移緩慢/線性地上升。我想調查是什麼原因造成的。任何人都可以請這麼友善並推薦一款工具?謝謝。windows服務+ nhibernate - 尖銳的體系結構 - 內存泄漏?
我有一個windows服務,執行時間觸發的批量插入。我正在使用sharp(contrib)架構和NHibernate。服務的內存消耗似乎隨着時間的推移緩慢/線性地上升。我想調查是什麼原因造成的。任何人都可以請這麼友善並推薦一款工具?謝謝。windows服務+ nhibernate - 尖銳的體系結構 - 內存泄漏?
有商業分析器(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性能計數器開始,瞭解泄漏的模式,看看哪堆增長等
你清理每個觸發器之間的會話? –
是的:NHibernateSession.Current.Clear(); – cs0815