지난 4 년 동안 힙 손상을 디버깅하기 위해 pageheap을 사용했습니다. 일반적으로 나는 그것에 문제가 없다. 하지만 지금 나는 이상한 행동에 직면 해있다. 다음 플래그와 함께 세계 플래그를 사용하여 WIN7-SP1-86 호스트에 내 프로세스에 pageheap을 활성화 한 후 : -enable 힙 꼬리 내가와 충돌이 발견 -enable 힙 -enable 페이지 힙Pageheap은 많은 메모리를 사용합니다.
을 확인 무료 체크 아웃 외 메모리 예외. ! address -summary 명령은 ~ 90 %의 가상 메모리가 PageHeap에 의해 소비되었다고 말했습니다.
필자가 아는 바와 같이, 페이지 힙이 그렇게 많은 양의 메모리 오버 헤드를 유발해서는 안되기 때문에 실제로 이상합니다.
누군가 이러한 행동의 원인을 설명해 주시겠습니까?
pageheap tail checking은 각 할당 된 블록의 끝에 보호 된 페이지를 오른쪽으로 추가합니다. 페이지는 일반적으로 4K이며, 이는 메모리가 증가하는 이유입니다. 가장 작은 블록조차도 페이지 끝에 할당되어 총 8K를 낭비합니다. 예를 들어, 내가 쓰는 앱 중 하나에 대해 메모리 사용량이 30M에서 400M으로 증가합니다. 나는 작은 블록을 많이 할당하고 있으며, 아직 최적화 단계에 있지 않습니다. – ActiveTrayPrntrTagDataStrDrvr
응용 프로그램에 메모리 누수가있을 가능성이 있습니까? Pageheap은 메모리 누수의 효과를 확대합니다. –
! heap -s는 몇 개의 블록을 보여줄 것이며, 위에서 언급 한 것처럼 가장 작은 블록조차도 8K가 필요하므로 메모리 부족은 일반적으로 놀랄 일이 아닙니다 –