2012-02-02 4 views
0

저는 C# 4.0 관리 코드 응용 프로그램을 만들고 있습니다. CLS를 준수하지 않는 외부 DLL을 사용하고 있습니다..NET에서 메모리 누수가 발생할 수 있습니까? 그렇다면 가장 좋은 도구는 무엇입니까?

DLL의 메모리 누수를 검사하기 위해 메모리 누수 탐지 도구가 필요합니까? 그렇다면 가장 좋은 도구는 무엇입니까?

+3

메모리 누출이 의심 되십니까? –

+2

관련 질문 : http://stackoverflow.com/questions/2526037/why-can-net-not-have-memory-leaks/2526058#2526058 – Oded

+0

여기에는 "최고의 도구"가 없습니다 ... 항상 켜져 있습니다. DLL은 무엇을합니까? 예를 들어, 관리되지 않는 메모리를 사용하는 DLL이 있고, 다른 DLL이 기본입니다.이 도구를 모두 사용하지 않아도됩니다. – Yahia

답변

1

CLR 프로파일 러, VSTS 프로파일 러, .NET Memory Profiler 또는 CLR 프로파일 러와 같은 도구를 사용하여 모든 .NET 프로그램에서 메모리 누수 찾기 및 메모리 사용 최적화를 할 수 있다고 말한대로 개체 크기 등을 확인할 수 있습니다.

2

관리되는 코드의 경우에도 메모리 누수가 발생할 수 있습니다. 당신이 실제로 하나를 찾지 않으면 나는 메모리 누수를 파헤지 않을 것이다.

누출을 조사해야 할 경우 ANTS Profiler을 제안 하겠지만 한계가 있으므로 사례별로 취해야합니다.

+0

메모리 누수가있는 .NET 코드에 대한 좋은 참고 자료를 찾을 수 있는지 알아보기로했습니다. 그러나 Oded가 가지고있는 링크는이 점을 상당히 잘 보여줍니다. –

1

예, .NET에서 메모리 누수가 발생할 수 있습니다. 대부분의 클래스가 자체적으로 비 관리 코드로 호출하기 때문에 기본 클래스 라이브러리 외에는 아무것도 사용하지 않을 때도 사용할 수 있습니다.

한 번 이상 열거 한 후에 System.DirectoryServices.SearchResultCollection을 처리하지 않았기 때문에 메모리 누수가 발생했습니다.

그러나 누출 감지 도구를 사용할 수 있는지 알 수 없습니다.

1

무료 WinDbg, SOS 및 GCRoot를 사용하여 메모리 누수를 진단 할 수 있습니다. David Anson은 this blog post에 대한 정보를 보여줍니다. Rico Mariani는 WinDbg 및 SOS 사용시 good blog post도 가지고 있습니다.

JustTrace, dotTraceANTS Profiler과 같은 기타 제품은 이러한 종류의 문제를 진단하는 데 도움을 줄 수 있습니다.