2013-04-09 6 views
0

코드의 영역은 메모리를 많이 사용하는 발견하기위한 좋은 도구/기술은 무엇입니까? 리눅스에서 valgrind에 대해 언급 한 비슷한 질문을 보았지만 Visual Studio 2010으로 개발 된 Windows 응용 프로그램에 대해서는 그렇지 않습니다.디버그 높은 메모리 사용

+0

이미이 고려 모르지만, Windows 응용 프로그램은 종종 와인을 사용 Valgrind의에서 실행할 수 있습니다. –

답변

0

성능 마법사는 리소스 사용에 대한 매우 상세한보기를 허용하며 높은 메모리 부하. 마법사를 시작하려면 Visual Studio의 분석 메뉴를 클릭 한 다음 성능 시작 마법사를 클릭하십시오. 전체 시험을 실행하려면 프리미엄 버전 이상이 필요할 수 있습니다.

+0

hmmm은 2012의 기능입니까? 2010 년에 "분석"메뉴가 없습니다. – pauld

+0

아니요, 2010 년에도 제공됩니다.하지만 아마도 Express 또는 Professional 버전의 Visual Studio가있을 것입니다. –

+0

예, 전문가입니다. 나는 분석 옵션을 위해 궁극적 인 것이 필요하다고 생각합니다. – pauld

2

또한 당신에게 할당 된 개체의 목록과 할당 프로파일을 사용하는 경우 각 개체가 생성 된 곳의 호출 스택을 제공 할 수 있습니다 AQTime있다.

다른 옵션은 수동으로 코드로 개체에 대한 인스턴스 카운터 코드를 인스트루먼트 등이 있습니다. 이상적이지는 않지만 특히 프로파일 링 도구가 응용 프로그램을 실행하지 못하는 경우 (예 : 메모리 부족 또는 계측 실패 등) 유용합니다.

대개 매우 명백한 방식으로 표시되지 않는 것은 메모리 조각화입니다. 많은 수의 큰 개체가 있고 많은 수의 작은 개체가 할당되어 있고 서로 다른 순서로 자주 해제되는 경우 쉽게 발생할 수 있습니다. 가능한 경우 이러한 개체 중 일부에 대해 풀을 사용하는 것이 가치가 있으며 일부 상황에서는 메모리 사용과 성능에 큰 영향을 줄 수 있습니다.

1

VS2010에 포함 된 Microsoft CRT는 누출 감지 기능을 강력하게 지원합니다. crtdbg.h 헤더에서 사용할 수 있으며이를 사용하려면 MSDN library article에 잘 설명되어 있습니다. 즉 너무 많은 어려움이 있다면

다음 Windows 용 디버깅 도구 패키지는 매우 유용 할 수 있습니다. UMHD (User Mode Heap Debugger) utility은 프로그램을 변경하지 않고 누출을보고 할 수 있습니다.

+0

감사합니다. 메모리 누수가 심각한 문제인지 확인해 보겠습니다. 그렇지 않으면 코드의 어느 부분이 메모리를 가장 많이 사용하는지 파악하기 위해 메모리 누수를 디버깅하지 않습니다. – pauld

관련 문제