2013-10-03 3 views
0

У меня есть служба Windows, которая выполняет массовые вставки, вызванные временем. Я использую архитектуру sharp (contrib) и NHibernate. Потребление памяти службы растет медленно/линейно с течением времени. Я хотел бы исследовать причину этого. Может ли кто-нибудь быть таким добрым и порекомендовать инструмент? Благодарю.windows service + nhibernate - острая архитектура - утечка памяти?

+0

Вы очистив сеанс между каждым триггером? –

+0

Да: NHibernateSession.Current.Clear(); – cs0815

ответ

3

Есть коммерческие профайлы (ANTS Profiler, DotTrace и т. Д.), Но также отличные SOS debugger extension, которые вы можете использовать в Visual Studio или WinDbg. Есть manyarticlesabouthow использовать SOS. Tess Ferrandez' blog - отличный ресурс для отладки.

Как правило, вы используете SOS, подобный этому. Первый запуск:

!EEHeap 

проверить состояние кучи, а затем

!dumpheap -stat 

, чтобы увидеть, что это тип просочились объектов. Оттуда вы можете использовать

!dumpheap -type <object type> 

в список объектов, а затем

!gcroot <object address> 

для конкретного объекта, чтобы увидеть, какие корни держат объект живой.

Однако, я всегда начинаю с проверки счетчиков производительности GC в таких случаях, чтобы понять картину утечки, увидеть, какая куча растет и т.д.

Смежные вопросы