2013-05-02 3 views
0

Mark Russovich의 "Mysteries of Memory Management Revealed"를 보았던 모든 사람들이 알고 있듯이, vmmap 도구는 프로세스 제한 (바닐라 32 비트 창에서 2GB)에 영향을 줄 수있는 몇 가지 도구에 대해 알 수있는 것들을 표시 할 수 있습니다.프로그래밍 방식으로 vmmap에 표시된 정보를 얻으려면 어떻게해야합니까?

프로그래밍 방식으로 내 총 메모리 크기 (프로세스 한도와 밀접한 관련이있는)를 모니터링하여 프로세스 제한에 도달했을 때의 상황을 기록 할 수 있기를 바랍니다. vmmap이이를 어떻게하는지 공개적으로 사용할 수있는 정보가 있습니까?

... 또한이 정보가 왜 그렇게 어렵지 않습니까 ??

것들 내가 알고 그 (AFAIK) 확실히 당신에게 전체 그림을 제공하지 않습니다

  • : 그것은 단지 개인 메모리 사용
  • System.Diagnostics.Process가에 대한 정보를 반환처럼 GetProcessMemoryInfo 보인다. 그것은 내가 어떤 Windows API 함수에서 찾도록 Dependency Walker을 사용 :(vmmap에 표시
+1

'VirtualQuery'와'VirtualQueryEx'를 보셨습니까? –

+0

@RogerRowland 아니요, 그 사람들에 대해서는 몰랐습니다. 그것은 유망 해 보인다. 고마워. –

+1

Ok - 의존성 워커를 사용하여 어떤 WinApi 함수가'vmmap.exe'에 의해 임포트되었는지 알아 보았습니다 - 유용한 도구 - http://www.dependencywalker.com/ –

답변

1

아무것도 일치하지 않는 사실 - VirtualMemorySize64은 여전히 ​​매우 vmmap에 의해 도시 전체 일치하지 않는 꽤 많은 수를 반환 0에서 가져왔다.

VirtualAlloc 
VirtualAllocEx 
VirtualFree 
VirtualProtectEx 
VirtualQueryEx 

그에서 봐, 그리고 당신이 vmmap이 무엇을하고 있는지 찾을 수 있는지 : vmmap.exe에 의해 123,는 아마도 관련이있는 다음과 같은 기능을 발견했다. 물론 동적으로 (즉, LoadLibrary을 통해) 만들어진 다른 API 호출은 종속성 워커에 표시되지 않습니다. side-bys-deload 된 DLL을 다룰 때 파손되는 것으로 알려져 있습니다.

관련 문제