我的记忆在哪里?

我们一直在使用Vmmap,Processexplorer和MS Detours来分析程序中的内存使用情况。 我们的目标是验证程序的内存使用情况。 例如,我们知道我们有X MB的数据从磁盘加载到内存中,我们希望确保我们不会以某种方式使用2X MB的内存来执行此操作。 但是,我们注意到以下差异: - 对于执行期间的特定点,Vmmap将报告~1310 MB的私有工作集,其中Processexplorer将报告~1304 MB(仅6 MB关闭,但哪一个“更”准确...) - 使用MS Detours进行内存跟踪将报告从HeapAlloc调用分配的~948 MB,但Vmmap会说该程序正在使用~1143 MB的私有堆 我的问题是, 除非我们的跟踪代码中存在错误,并且内存由驱动程序映射,任何人都可以解释Vmmap和Processexplorer如何捕获比MS Detours挂钩更多的内存数据? 我们所关注的其他值得注意的电话是: - VirtualAlloc - ZwAllocateVirtualMemory - RtlAllocateHeap - MapViewOfSection 提前谢谢了!     
已邀请:
它会建议在特定时间进行内存转储并在windbg中打开并执行!address -summary。此命令应告诉您每个内存区域的状态。 如果它是一个.NET应用程序,那么你可能想要深入研究GC堆。有关详细信息,请参阅文章http://vpnchoudhary.blogspot.com/2011/03/out-of-memory-exception-simple.html。     

要回复问题请先登录注册