【发布时间】:2011-10-04 23:16:59
【问题描述】:
我一直在做一些关于高内存问题的工作,我一直在 windbg 中进行大量堆分析,我很好奇“!heap -flt -s xxxx”命令中不同列的真正含义.
我阅读了What do the 'size' numbers mean in the windbg !heap output?,并查看了我的“Windows Internals”一书,但我仍然有很多问题。所以列和我的问题如下。
**HEAP_ENTRY** - What does this pointer really point to? How is it different than UserPtr?
**Size** - What does this size mean? How is it different than UserSize?
**Prev** - This just appears to be the negative offset to get to the previous heap entry. Still not sure exactly how it's used.
**Flags** - Is there any documentation on these flags?
**UserPtr** - What is the user pointer? In all cases I've seen it's always 8 bytes higher than the HEAP_ENTRY, but I don't really know what it points to.
**UserSize** - This appears to be the size of the actual allocation.
**state** - This just tells you what state of this heap entry is (free, busy, etc....)
Example:
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
0015eeb0 0044 0000 [07] 0015eeb8 00204 - (busy)
【问题讨论】:
-
好问题.. 我也想知道同样的事情
标签: debugging heap-memory windbg