2009-07-17 5 views
6

메모리 누수를 감지 할 수 있도록 정적 소스 또는 실행중인 프로그램을 분석하는 데 유용한 무료 도구가 있습니까?.NET 응용 프로그램의 메모리 누수 테스트

저는 몇 가지 Windows 서비스를 구축했으며 몇 주 동안 계속 실행하면 메모리를 소비하지 않도록하고 싶습니다.

+1

가비지 콜렉터가 결국 그걸 가져 가지 않을까요? – James

+1

주변에 대한 언급이있는 것은 아닙니다. 예 : 이벤트가있는 객체를 만든 다음 이벤트 처리기를 연결하면 발생할 수 있습니다. 이벤트 처리기를 제거하지 않으면 개체가 정리되지 않습니다. –

+0

누설 유형은 그가 주변에 놓여있는 객체에 대한 참조를 유지하면서 크기가 계속 커지는 객체입니다. 또한 그는 자신의 코드에서 발견하려고하는 관리되지 않는 리소스와 관련된 버그를 가질 수 있으며 .NET 런타임에는 적어도 하나의 버그가있었습니다 (CopyFromScreen 메서드가 매번 핸들을 누수 함). 그래서 나는 그런 것들을 확인하고 싶어. –

답변

2

무료 인의 요구 사항을 충족하지만, 레드 게이트에 의해 하나 거기에 내가 생각하는 제안 가치가되지 않습니다 - ANTS Memory Profiler

내가 재판 (일부 전에 도구를 사용했습니다, 일부 우리는했습니다 구입) 매우 좋은 것으로 나타났습니다.

0

Profile Sharp는 서비스 실행 및 성능 모니터를 사용하여 서비스의 메모리 사용에 대한 정보를 수집하자 .NET

1

을위한 무료 (오픈 소스) 성능과 메모리 프로파일 러입니다. 또한 관리되지 않는 리소스를 사용하는 경우 IDisposable을 사용하여 코드가 이러한 리소스를 적절하게 삭제해야합니다. 관리되지 않는 환경에서는 단순히 포인터를 놓는 것을 잊어서 누출을 쉽게 만들 수 있지만 관리되는 환경에서는 불가능합니다. 그러나 새 오브젝트를 계속 할당하고 가비지 수집이 불가능하도록 참조를 유지하면 서비스에 더 많은 메모리가 필요합니다.

1

저는 Microsoft의 CLR Profiler을 약간의 성공을 거두었습니다. 모든 혜택을 누리려면 documentation을 반드시 읽으십시오.

0

Windows 작업 관리자를 사용하여 적어도 서비스의 메모리 누수를 감지 할 수 있다는 것을 잊지 마십시오.

는 프로세스 탭으로 전환 할 객체를 추적하기 위해 작업 관리자를 사용하는 또 다른 방법은, 다음 보기에>열 선택 가서 사용자가 개체 확인하고 GDI는 아마도 유용 (GDI를하지 개체 당신은 서비스를 실행하고 있기 때문에 당신은 유용하다고 느낄 수 있습니다.)