【发布时间】:2013-06-21 17:33:12
【问题描述】:
我正在尝试使用 UMDH 来查找分配了大块内存的位置,但我得到的结果似乎完全荒谬。
我启动程序,等待它达到平衡,然后用 umdh 抓取快照。然后我执行导致它吸收内存的活动,等待它再次达到平衡,然后获取另一个快照。然后我运行一个差异:
umdh -d -v 1.txt 2.txt > diff.txt
我看到 perfmon 中有 500M 额外的私有字节(其他内存计数器也相应地增长)。 UMDH diff 显示了“减少”一些巨大的数字。说什么???谁能解释为什么会这样?
然后我注释掉了函数中在最大增长堆栈中报告的所有活动。我再次执行上述重现,观察了相同的 500M 增长模式,但 UMDH 报告内存使用量有小增加!!!非常小是那里的有效词。
第一部分真的让我大吃一惊。什么会导致 UMDH 显示堆使用量减少但 perfmon 显示同一进程分配的内存使用量增加相当大?
我考虑了线程堆栈,但线程堆栈计数实际上下降了。 “私有字节”还可能包含哪些内容?
【问题讨论】:
标签: windows memory-leaks perfmon umdh