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 结果。 例如,CTRL 和 ALT 强制刷新;但是,“打印”屏幕不会。
累计值
每当启用池标记时,Windows 将收集和计算 PoolMon 显示的数据。 使用的分配、自由操作和字节的值从 Windows 启动时间累积,并在 Windows 重启之前单调增加。 如果驱动程序或组件在 Windows 启动后启动,则这些值将从驱动程序或组件上次启动的时间累积,并且仅在驱动程序或系统重启时重置。
解释标记值
所有池内存分配都有标记,但它们并非都具有特征标记值。 当分配内存的驱动程序使用 ExAllocatePoolWithTag 或 ExAllocatePoolWithQuotaTag 设置标记值时,池内存分配具有特征 标记值。 如果驱动程序未 (ExAllocatePool、 ExAllocatePoolWithQuota) 分配标记值,则 Windows 仍会创建标记,但它会分配默认标记值 None。 因此,无法区分该驱动程序的分配与其他池分配的统计信息。