我们一直在使用 Vmmap、Processexplorer 和 MS Detours 来分析我们程序中的内存使用情况。我们的目标是验证我们程序的内存使用情况。例如,我们知道我们有 X MB 的数据从磁盘加载到内存中,我们希望确保我们不会以某种方式使用 2X MB 的内存来执行此操作。
但是,我们注意到以下差异: - 对于执行期间的特定点,Vmmap 将报告约 1310 MB 的私有工作集,而 Processexplorer 将报告约 1304 MB(仅减少 6MB,但哪个“更”准确......) - 使用 MS Detours 的内存跟踪将报告从 HeapAlloc 调用分配的 ~948 MB,但 Vmmap 会说程序正在使用 ~1143 MB 的私有堆
我的问题是,除非我们的跟踪代码中出现错误,并且内存被驱动程序映射,任何人都可以解释 Vmmap 和 Processexplorer 如何比我们的 MS Detours 钩子捕获更多的内存数据吗?
我们挂钩的其他值得注意的调用是: - VirtualAlloc - ZwAllocateVirtualMemory - RtlAllocateHeap - MapViewOfSection
提前谢谢了!