2013-10-03 4 views
0

시간에 의해 트리거 된 대량 삽입을 수행하는 Windows 서비스가 있습니다. 나는 날카로운 (기여) 아키텍처와 NHibernate를 사용하고있다. 서비스의 메모리 소비는 시간이 지남에 따라 천천히/선형 적으로 증가하는 것으로 보입니다. 이 문제의 원인을 조사하고 싶습니다. 아무도 친절하고 도구를 추천 해 주시겠습니까? 감사.windows 서비스 + nhibernate - 예리한 아키텍처 - 메모리 누출?

+0

각 트리거 사이의 세션을 삭제하고 있습니까 등 성장하고있는 힙 참조 누출 패턴을 이해하고, 이러한 경우에 GC 성능 카운터를 확인 시작? –

+0

예 : NHibernateSession.Current.Clear(); – cs0815

답변

3

상업용 프로파일 러 (ANTS Profiler, DotTrace 등)뿐만 아니라 Visual Studio 또는 WinDbg에서 사용할 수있는 우수 SOS debugger extension도 있습니다. SOS를 사용하려면 manyarticlesabouthow이 있습니다. Tess Ferrandez' blog은 디버깅에 훌륭한 리소스입니다.

일반적으로 이와 비슷한 SOS를 사용합니다. 첫 방송은 :

!EEHeap 

은 누출 된 객체의 유형이 무엇인지 볼 수

!dumpheap -stat 

다음에 힙의 상태를 확인합니다. 여기에서, 당신은 뿌리 개체가 살아 유지되는보고, 특정 개체에 대해 다음

!gcroot <object address> 

!dumpheap -type <object type> 

이 개체를 나열하는 데 사용할 수 있습니다.

그러나, 나는 항상