2011-02-22 3 views
1

우리는 Vmmap, Processexplorer 및 MS Detours를 사용하여 프로그램에서 메모리 사용을 분석했습니다. 우리의 목표는 프로그램의 메모리 사용을 검증하는 것이 었습니다. 예를 들어, 우리는 디스크에서 메모리로로드하는 X MB의 데이터를 가지고 있음을 알고 있습니다. 우리는 메모리를 2X MB로 사용하지 않기를 원합니다.내 기억은 어디로 가고 있습니까?

- 실행 중 특정 지점에 대해 Vmmap은 ~ 1310MB의 사설 작업 집합을보고합니다. Processexplorer는 ~ 1304MB를보고합니다 (6MB 만 꺼지지만 "더" ) ... 정확한 -에, 개인 힙의 1143 개 매크로 블럭 내 질문은

입니다

~ 금지 오류를 MS 본론으로 추적 메모리를 HeapAlloc 호출에서 할당 ~ 948 MB들을보고 있지만, Vmmap 프로그램이 사용하고 있음을 말할 것이다 우리의 추적 코드 및 드라이버가 매핑되는 메모리에 대해 Vmmap 및 Processexplorer가 MS Detours 후크보다 더 많은 메모리 데이터를 캡처하는 방법을 설명 할 수 있습니까? 우리는 더에 부착 한

다른 주목할만한 호출은 다음과 같습니다 - VirtualAlloc을 - ZwAllocateVirtualMemory - RtlAllocateHeap - 사전에 MapViewOfSection

많은 감사합니다!

+0

이러한 측정 항목의 의미를 알고 있습니까? 당신이 그 (것)들에 대한 포괄적이고 깊은 이해가 없다면, 많은 포인트를 측정 할 필요가 없습니다. 나는 그런 이해가 없다는 것을 압니다. –

+0

@ David : 오. 더 조심해야합니다. 나는 그 주석을 지울 것이다. 힌트를 가져 주셔서 감사합니다. – eckes

+1

당신이 구부린 버전의 할당 루틴이 바로 계산 될 수 있습니까? 후크가 일찍 설치 되나요? 후크가 설치되기 전에 할당 된 메모리가 있습니까? 나는 Russellovich가 정말로 자신의 물건을 알고 있다는 사실을 알기 위해 Process Explorer를 거의 모든 사람이 쓰는 것 이상으로 신뢰합니다. –

답변

1

그 특정 시간에 메모리 덤프를 제안하고 windbg에서 열어서 address-summary를 할 것을 제안합니다. 이 명령은 각 메모리 영역의 상태를 알려줍니다. .NET 응용 프로그램 인 경우 GC 힙을 자세히 살펴볼 수 있습니다. 자세한 내용은 http://vpnchoudhary.blogspot.com/2011/03/out-of-memory-exception-simple.html 문서를 참조하십시오.

관련 문제