2011-02-15 5 views
1

.net 응용 프로그램 (Windows 서비스로 실행 중)이 있습니다. 때로는 메모리 누수가 시작됩니다 (1GB + RAM 사용). 이 메모리 누수의 원인을 어떻게 알 수 있습니까? 어떤 도구가 있으며 어떻게 사용합니까?.net 응용 프로그램에서 메모리 누수의 원인을 찾는 방법

+0

메모리가 부족할 때 얼마나 많은 메모리를 사용할 수 있습니까? 그 시점에서 메모리가 부족합니까? –

+0

@Lasse, 사실 나는 그들의 메모리 소비가 증가함에 따라 서버를 asphixiating 시작 다양한 서비스가 있습니다. 예, 서버의 메모리가 부족합니다. –

답변

2

.NET 응용 프로그램에서 메모리 누수를 디버깅하기 위해 WinDbg과 SOS-extesion을 사용했습니다.

herehere으로 시작하십시오. 또한 Tess Ferrandez' blog을 사용하여 WinDbg 디버깅에 대한 자세한 내용을 참조하십시오.

1

유사한 상황에서 저는 Ants 메모리 프로파일 러 또는 유사한 것을 선택하고 예상보다 많이 할당 된 객체에 대해 할당 된 객체의 수를 확인합니다. 나는 특히 형식과 다른 대상들을 묶어 놓은 사건들을 본다. 이것은 때로는 누출과 관련된 어떤 물건의 좋은 시작을 제공합니다. 거기에서 그 객체에 대한 "숨겨진"참조를 찾는 것은 일반적인 탐정 작업입니다.

0

나는 Ants을 한 번 사용했는데 내 문제를 해결하는 데 도움이되었습니다. Felice가 지적한 것처럼 사용 가능한 무료 도구가 있습니다.

대부분의 경우 메모리 누수는 배치되지 않은 개체에서 발생합니다. using 블록에서 모든 연결을 래핑 해보십시오. 그리고 COM + 개체 (예 : GDI + 개체 - 비트 맵 등)의 경우 Dispose()를 끝내면 항상 호출하십시오. 또한 이벤트 핸들러를 등록 취소하는 것을 잊어 버리면 많은 메모리를 사용합니다.

0

.NET 응용 프로그램에서 메모리 누수를 찾으려면 Scitech (http://memprofiler.com/)의 .NET 메모리 프로파일 러를 사용하는 것이 좋습니다.

관련 문제