【发布时间】:2013-05-02 16:17:40
【问题描述】:
任何看过 Mark Russovich 演讲“揭示内存管理之谜”的人都知道,vmmap 工具可以向您显示一些其他工具似乎不知道的与您的进程限制(香草 32 位窗口上为 2GB)有关的东西.
我希望能够以编程方式监控我的真实总内存大小(与进程限制密切相关的那个),这样我至少可以记录当我接近进程限制时发生的事情。是否有任何关于 vmmap 如何做到这一点的公开信息?
...另外,为什么这些信息这么难获得??
我所知道的事情 (AFAIK) 并不能完全为您提供完整的图片:
- ::GetProcessMemoryInfo 看起来只返回有关私有内存使用情况的信息
- System.Diagnostics.Process.VirtualMemorySize64 返回一个相当大的数字,但仍然与 vmmap 显示的总数不完全匹配 - 实际上它与 vmmap 中显示的任何内容都不匹配:(
【问题讨论】:
-
你看
VirtualQuery和VirtualQueryEx了吗? -
@RogerRowland 不,我不知道这些。看起来很有希望,谢谢。
-
好的 - 我使用依赖遍历器查看
vmmap.exe导入了哪些 WinApi 函数 - 有用的工具 - dependencywalker.com -
@RogerRowland Neat,我知道dependencywalker,但不知道它可以追溯到api函数。如果您想将其放入答案中,我会接受。
标签: windows visual-c++ operating-system virtual-memory vmmap