windcg!地址输出</unclassified>中<unclassified>的含义是什么?

时间:2010-02-05 20:41:12

标签: windows memory windbg

示例:

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%

2 个答案:

答案 0 :(得分:1)

嗯,这是一个疯狂的猜测,但可以占用不在该列表上的VA空间的东西直接调用VirtualAlloc或内存映射文件。 VMMap可能会在这里证明更有帮助。

答案 1 :(得分:1)

string example = @"EP(DebugFlag='N',UILogFlag='N') Other words here"; var result = example.Split(new string[]{" "}, StringSplitOptions.RemoveEmptyEntries).ToList(); foreach(var phrase in result) { Console.WriteLine("{0}", phrase); } 用于不能进一步追溯到其他内存管理器的分配,因此从WinDbg的角度通过<unclassified>分配。在较新版本的WinDbg中,这称为VirtualAlloc()

记忆分类的原因有不同:

  • 当然直接拨打<unknown>
  • 通过Windows堆管理器分配大于512 kb(请参阅statement by Sasha Goldshtein)。
  • .NET运行时的分配(在使用特殊的SOS扩展之前,它有自己的WinDbg未知的堆)
  • 某些版本的MSXML
  • 潜在的其他内存管理器,例如来自Java或Python的堆管理器(只是猜测,我从未验证过)