Debugging Tools for Windows

!memusage

!memusage扩展显示物理内存使用的摘要统计。

语法

Windows 2000的语法

!memusage 

Windows XP和之后的语法

!memusage [Flags]

Flags
(Windows XP和之后)可以是下面这些值的任意一个。默认为0x0。
0x0
显示一般摘要信息,以及对PFN数据库中的页面更详细一些的说明。查看注释节获得这种输出的示例。
0x1
仅显示PFN数据库中已修改的非写页面(no-write page)的摘要信息。
0x2
仅显示PFN数据库中已修改的非写页面(no-write page)的详细信息。
0x8
仅显示内存使用的一般摘要信息。

DLL

Windows 2000 Kdextx86.dll
Windows XP和之后 Kdexts.dll

注释

物理内存统计是由内存管理器(Memory Manager)的页面帧序号(PFN)数据库搜集的。

由于需要获取大量数据,该命令需要运行较长时间,特别是当目标机运行在64位模式时。加载PFN数据库时,会由一个计数器来显示进度。要加快这种加载,可以通过CTRL+A (Toggle Baud Rate)键增加COM口的速度,或者使用,.cache (Set Cache Size)命令增加缓存大小(可能大约在10 MB左右)。

!memusage命令也可以在本地内核调试时使用。

下面是该命令输出的一个例子:

kd> !memusage
 loading PFN database
loading (98% complete)

Compiling memory usage data (100% Complete).
             Zeroed:     49 (   196 kb)
               Free:      5 (    20 kb)
            Standby:   5489 ( 21956 kb)
           Modified:    714 (  2856 kb)
    ModifiedNoWrite:      1 (     4 kb)
       Active/Valid:  10119 ( 40476 kb)
         Transition:      6 (    24 kb)
            Unknown:      0 (     0 kb)
              TOTAL:  16383 ( 65532 kb)

  Building kernel map
  Finished building kernel map
Scanning PFN database - (99% complete) 

  Usage Summary (in Kb):


Control Valid Standby Dirty Shared Locked PageTables  name

8251a258    12    108     0     0     0     0  mapped_file( cscui.dll )
827ab1b8     8   1708     0     0     0     0  mapped_file( $Mft )
8263c408   908     48     0     0     0     0  mapped_file( win32k.sys )
8252dda8     0    324     0     0     0     0  mapped_file( ShellIconCache )
8272f638   128    112     0   116     0     0  mapped_file( advapi32.dll )
......
82755958     0      4     0     0     0     0  mapped_file( $Directory )
8250b518     0      4     0     0     0     0    No Name for File
8254d8d8     0      4     0     0     0     0  mapped_file( $Directory )
82537be8     0      4     0     0     0     0  mapped_file( Windows Explorer.lnk )

--------  1348      0     0 ----- -----   904  process ( System )
--------   492      0     0 ----- -----    72  process ( winmine.exe )
--------  3364   1384  1396 ----- -----   188  process ( explorer.exe )
--------   972      0     0 ----- -----    88  process ( services.exe )
--------   496   1456   384 ----- -----   164  process ( winmgmt.exe )
--------  1144      0     0 ----- -----   120  process ( svchost.exe )
--------   944      0     0 ----- -----   156  process ( winlogon.exe )
--------   412      0     0 ----- -----    64  process ( csrss.exe )
......
--------    12      0     0 ----- -----     8  process ( wmiadap.exe )

--------   316      0     0 ----- -----     0  pagefile section (346e)
--------  4096      0     0 ----- -----     0  pagefile section (9ad)

--------   884    280    36 -----     0 -----  driver ( ntoskrnl.exe )
--------    88      8     0 -----     0 -----  driver ( hal.dll )
--------     8      0     0 -----     0 -----  driver ( kdcom.dll )
--------    12      0     0 -----     0 -----  driver ( BOOTVID.dll )
......
--------     8      0     0 -----     0 -----  driver ( ndisuio.sys )
--------    16      0     0 -----     0 -----  driver ( dump_scsiport.sys )
--------    56      0     0 -----     0 -----  driver ( dump_aic78xx.sys )
--------  2756   1060   876 -----     0 -----  driver ( Paged Pool )
--------  1936    128   148 -----     0 -----  driver ( Kernel Stacks )
--------     0      0     0 -----     0 -----  driver ( NonPaged Pool )

第一列显示用来描述每个已映射结构(mapped structure)的控制域结构(control area structure)地址。使用!ca扩展命令可以显示这些控制域。

注释

使用!vm扩展命令可以分析虚拟内存使用。该命令一般比!memusage要更有用些。关于内存管理的信息,查看Mark Russinovich 和David Solomon 编写的Microsoft Windows Internals

!pfn扩展命令可以用来查看PFN数据库中某个特定页面帧。

Build machine: CAPEBUILD