Example:
0:074> !address -summary
--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free 90919 7ec`34659000 ( 7.923 Tb) 99.03%
<unclassified> 95426 12`3c3e9000 ( 72.941 Gb) 92.12% 0.89%
Heap 744 1`7ee50000 ( 5.983 Gb) 7.56% 0.07%
Image 4303 0`0f890000 ( 248.563 Mb) 0.31% 0.00%
Stack 225 0`00de9000 ( 13.910 Mb) 0.02% 0.00%
TEB 75 0`00096000 ( 600.000 kb) 0.00% 0.00%
ActivationContextData 28 0`00025000 ( 148.000 kb) 0.00% 0.00%
NlsTables 1 0`00023000 ( 140.000 kb) 0.00% 0.00%
CsrSharedMemory 1 0`00006000 ( 24.000 kb) 0.00% 0.00%
PEB 1 0`00001000 ( 4.000 kb) 0.00% 0.00%
<unclassified>
用于无法进一步追踪到其他内存管理器的分配,因此通过VirtualAlloc()
从WinDbg的角度来看。在较新版本的 WinDbg 中,这称为<unknown>
.
以这种方式对内存进行分类有不同的原因:
- 直接致电
VirtualAlloc()
当然
- 通过 Windows 堆管理器分配的大于 512 kb 的内存(请参阅萨莎·戈德斯坦的声明 http://blogs.microsoft.co.il/sasha/2015/10/23/large-win32-heap-allocations-go-directly-to-virtualalloc/).
- .NET 运行时的分配(它有自己的堆,WinDbg 不知道这些堆,除非您使用特殊的 SOS 扩展)
- MSXML 的某些版本
- 潜在的其他内存管理器,例如来自 Java 或 Python 的堆管理器(只是猜测,我从未验证过)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)