繁体   English   中英

UMDH和perfmon专用字节

[英]UMDH & perfmon private bytes

我正在尝试使用UMDH来查找在哪里分配了大块内存,但是我得到的结果似乎完全荒谬。

我启动程序,等待它达到平衡,然后使用umdh捕获快照。 然后,我执行使它消耗内存的活动,等待它再次达到平衡,然后获取另一个快照。 然后我运行一个差异:

umdh -d -v 1.txt 2.txt > diff.txt

我在perfmon中目睹了500M的其他专用字节(其他内存计数器也相应增加)。 UMDH差异显示“……的减少”。 说什么??? 谁能解释为什么会这样?

然后,我注释掉了在最大增长堆栈中报告的函数中的所有活动。 我再次执行了上述复制操作,观察到相同的500M增长模式,但是UMDH报告内存使用有小幅增长 !!! 很小,是那里的常用词。

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

我考虑了线程堆栈,但是线程堆栈数量实际上减少了。 “私有字节”还有什么可能呢?

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

umdh -p:PID -f:memlog1.txt

umdh -p:PID -f:memlog2.txt

umdh memlog1.txt memlog2.txt > result.txt

如果看到以下警告:

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.

跑:

gflags -i "full\path\of\exe" +ust

并重新启动exe,然后再次运行umdh。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM