PoolMon 显示

PoolMon 在命令窗口中显示有关池内存分配的数据列。 使用箭头键、PAGE UP 和 PAGE Down 键滚动浏览数据。

注意

若要查看整个 PoolMon 显示,命令提示符窗口大小必须至少为 80 个字符宽 (宽度=80) 且至少 53 行高 (高度=53) ;命令提示符窗口缓冲区必须至少为 500 个字符宽 (宽度=500) ,并且至少 2000 行高 (height=2000) 。 否则,显示可能会被截断。

下表描述了 PoolMon 显示中的列。

列名 描述
标记 分配给池分配的 4 字节标记。
类型 内存分配是分页字节还是非分页字节。
分配 分配数。
( ) 自上次更新以来分配数的变化。
释放 可用操作的数目。
( ) 自上次更新以来分配数的变化。
差异 分配数减去可用操作数。
字节 分配的大小(以使用的字节为单位)。
( ) 自上次更新以来分配大小的变化。
每个分配 Bytes 的值除以 Diff 的值。
Mapped_Driver 本地驱动程序其他常用驱动程序和系统组件 (分配池标记值的 /g) 。 仅当使用 /g 参数时,才会显示此列。

以下示例 PoolMon 输出按分配数排序。 (若要以这种方式对显示进行排序,请使用 /a parameter.) 启动 PoolMon

 Memory:  260620K Avail:   96364K  PageFlts:     0   InRam Krnl: 1916K P:17856K
 Commit: 203500K Limit: 640916K Peak: 260632K            Pool N: 8332K P:27220K
 System pool information
 Tag  Type     Allocs            Frees            Diff   Bytes       Per Alloc

 Wait Nonp    3971107 (   0)   3971077 (   0)       30    8456 (     0)    281
 ObSt Nonp    2791258 (   0)   2791258 (   0)        0       0 (     0)      0
 Gxlt Paged   1161638 (   0)   1161630 (   0)        8     864 (     0)    108
 Ustm Paged   1088342 (   0)   1088298 (   0)       44    2464 (     0)     56
 Io   Nonp    1021112 (   1)   1020985 (   1)      127   91912 (     0)    723
 ObSq Paged    967615 (   0)    967615 (   0)        0       0 (     0)      0
 Key  Paged    954821 (   0)    953979 (   0)      842   87528 (     0)    103
 SePa Nonp     680348 (   0)    680321 (   0)       27    3656 (     0)    135

更新速率

PoolMon 每五秒更新一次显示。 不能以编程方式更改更新速率。 但是,如果运行 PoolMon 的窗口具有焦点,则可以通过单击某些键来强制刷新 PoolMon 结果。 例如,CTRLALT 强制刷新;但是,“打印”屏幕不会。

累计值

每当启用池标记时,Windows 将收集和计算 PoolMon 显示的数据。 使用的分配、自由操作和字节的值从 Windows 启动时间累积,并在 Windows 重启之前单调增加。 如果驱动程序或组件在 Windows 启动后启动,则这些值将从驱动程序或组件上次启动的时间累积,并且仅在驱动程序或系统重启时重置。

解释标记值

所有池内存分配都有标记,但它们并非都具有特征标记值。 当分配内存的驱动程序使用 ExAllocatePoolWithTag 或 ExAllocatePoolWithQuotaTag 设置标记值时,池内存分配具有特征 标记值。 如果驱动程序未 (ExAllocatePoolExAllocatePoolWithQuota) 分配标记值,则 Windows 仍会创建标记,但它会分配默认标记值 None。 因此,无法区分该驱动程序的分配与其他池分配的统计信息。