我们一直在使用Vmmap、Processexplorer和MS Detour来分析程序中的内存使用情况。我们的目标是验证程序的内存使用情况。例如,我们知道我们有X MB的数据从磁盘加载到内存中,我们希望确保我们不会以某种方式使用2X MB的内存来执行此操作。
然而,我们注意到了以下差异:-对于执行过程中的特定时间点,Vmmap将报告约1310 6MB的私有工作集,其中Processexplorer将报告约1304 6MB(仅关闭6MB,但哪个更准确...)- MS Detour的内存跟踪将报告从HeapAlloc调用分配的约948 6MB,但Vmmap将显示程序正在使用约1143MB的私有堆
我的问题是,除了跟踪代码中的错误,以及驱动程序映射的内存之外,有人能解释一下Vmmap和Processexplorer如何捕获比我们的MS Detour钩子更多的内存数据吗?
我们连接的其他值得注意的调用是:- VirtualAlloc - ZwAllocateVirtualMemory - RtlAllocateHeap - MapViewOfSection
首先要感谢大家!
发布于 2011-04-04 04:02:43
它会建议在特定时间获取内存转储,并在windbg中打开它并执行!address -summary。这个命令应该会告诉你每个内存区域的状态。如果它是一个.NET应用程序,那么你可能想深入了解一下GC堆。您可以参考文章http://vpnchoudhary.blogspot.com/2011/03/out-of-memory-exception-simple.html以了解更多详细信息。
https://stackoverflow.com/questions/5082677
复制相似问题