首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UMDH & perfmon私有字节

UMDH & perfmon私有字节
EN

Stack Overflow用户
提问于 2013-06-25 03:11:35
回答 1查看 377关注 0票数 1

我试图使用UMDH来查找内存块分配的位置,但是我得到的结果似乎完全荒谬。

我启动程序,等待它达到平衡,然后用umdh获取快照。然后,我执行活动,使它吸收内存,等待它再次达到平衡,并获取另一个快照。然后我做了个差异化:

代码语言:javascript
复制
umdh -d -v 1.txt 2.txt > diff.txt

我在perfmon中看到了5亿个额外的私有字节(其他内存计数器也相应地增长)。UMDH差异显示“减少.”一些巨大的数字。说什么?有人能解释一下为什么会是这样吗?

然后,我注释掉了在最大的增长堆栈中报告的函数中的所有活动。我再次进行了上述复制,观看了相同的500米增长模式,但UMDH报告的内存使用量略有增加!很小才是最有用的词。

第一部分真的让我大吃一惊。是什么原因导致UMDH显示堆使用减少,而perfmon显示同一进程分配的内存使用量有相当大的增加?

我考虑了线程堆栈,但线程堆栈计数实际上下降了。还有什么可以进入“私有字节”呢?

EN

回答 1

Stack Overflow用户

发布于 2013-12-10 09:48:23

将调试信息文件,即pdb,放到exe的相同路径中。以下命令有效,将PID替换为要转储的实际进程ID:

代码语言:javascript
复制
umdh -p:PID -f:memlog1.txt

umdh -p:PID -f:memlog2.txt

umdh memlog1.txt memlog2.txt > result.txt

如果您看到以下警告:

代码语言:javascript
复制
Warning:
Warning: UMDH didn't find any allocations that have stacks collected.
Warning: Use gflags to enable allocation stack collection.
Warning: Restart the application for the setting to be in effect.

跑:

代码语言:javascript
复制
gflags -i "full\path\of\exe" +ust

并在再次运行umdh之前重新启动exe。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17288546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档