在windbg中,我可以列出带有lm的加载模块。
如何找到这些组件的内存占用量?
我正在分析一个怀疑使用太多内存的进程的转储,我注意到的一件事是程序集的数量,但不确定它们在内存中占用的大小。
此外,他们似乎并没有处于连续的记忆位置。或者他们是否以某种方式排列lm的输出?
谢谢!
答案 0 :(得分:2)
!address -summary为您提供了一个很好的概述。 检查图像行
0:008> !address -summary
--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free 212 b13cb000 ( 2.769 Gb) 69.23%
Heap 455 25281000 ( 594.504 Mb) 47.18% 14.51%
<unknown> 861 2168d000 ( 534.551 Mb) 42.42% 13.05%
Image 662 4e8e000 ( 78.555 Mb) 6.23% 1.92%
Stack 156 3400000 ( 52.000 Mb) 4.13% 1.27%
Other 39 54000 ( 336.000 kb) 0.03% 0.01%
TEB 52 34000 ( 208.000 kb) 0.02% 0.00%
PEB 1 1000 ( 4.000 kb) 0.00% 0.00%
答案 1 :(得分:1)
您可以使用lmvm module_name
检查每个模块的大小。有一个ImageSize
输出,表示该模块的十六进制大小。
编辑:另一种方法是首先lm
显示所有模块,然后使用!lmi start_address
或!lmi module_name
获取有关特定模块的信息。 !lmi
有一个尺寸字段,表示图像尺寸。
请注意,对于加载的.NET 4本机映像,您必须使用!lmi start_address
,因为模块名称解析失败。