5

많은 메모리가 필요한 32 비트 최종 사용자 응용 프로그램에서 작업합니다. 최대 몇 기가 바이트. 최근에 우리는 내부 메모리 할당 전략을 바꾸어 메모리 매핑 된 파일을 사용하지 않고 파일없이 this Raymond Chen article.에서 영감을 얻었습니다. 훌륭하게 작동합니다.메모리 매핑 된 파일 : 메모리 사용을 모니터링하는 방법

유일한 단점은 다음과 같습니다.이 방법으로 기가 바이트의 메모리를 할당하면 성능 카운터의 어느 위치에도 나타나지 않습니다. 물론, 얼마나 할당되었는지, 그리고 얼마나 많은 공간이 내 주소 공간에 매핑되는지는 알지만 실제로 메모리와 페이지 파일로 어떻게 나누어 졌는지는 알지 못합니다. 내가 디버깅을 위해 로깅하는 것보다 다른 이유가 없다면 알고 싶습니다.

+0

프로세스 -> 페이지 파일에 표시되어야합니다. 바이트 – John

답변

0

해결 방법은 내 응용 프로그램을 sysinternals' VMMap으로 모니터링하는 것이 었습니다. 이것은 할당 유형 (내 메모리 매핑 된 파일을 "공유"라고 함)뿐만 아니라 상태 (메모리 또는 스왑 아웃)별로 응용 프로그램 메모리 사용을 세분화합니다.

그래픽 메모리 조각화지도가 있습니다!

0

QueryWorkingSet을 호출하고 매핑 된 범위 내에있는 페이지 수를 계산하여 메모리가 작업 집합의 일부인지 확인합니다. 그러나 페이지가 작업 세트에서 제외 될 수 있지만 여전히 어딘가에 물리적 메모리에 남아있을 수 있습니다.

+0

흥미 롭습니다! 한 가지 걸림돌이있을 수 있습니다. Windows에서 작업 세트에서 페이지를 제거 할 때 잠시 동안 액세스하지 못할 수 있습니다. 나는 다른 누군가가 기억을 필요로하지 않는 한 창문이 물리적 인 기억 속에 머물러 있다고 가정하고있다. –

관련 문제