4. 内存快照
这个工具可以将所有内存资源的消耗情况写进一个日志文件中, 供以后分析使用,有点类似"快照"的方式.日志文件使用的默认名字是Memsnap.log,当然在建立这个日志文件时,也可以用其它你认为合适的名字。在win98和CW2KP中,系统信息中都有一个和这个工具的作用类似的程序:Dr Watson,俗称“系统快照”。Win98中的Dr Watson功能过于简单,到了CW2KP中,Dr Watson的功能大大加强,特别是对出错程序列出的信息很详细,如果使用得当,对付出错程序的效果还是理想的.至于显示出的信息,大部分都与CPU的寄存器和程序的堆栈有关,属于底层信息,对一般用户的参考价值不大。
MemSnap完整的语法为:
memsnap [-t] [-g] [-?] [logfile]
参数及说明:
-t :加入标记信息,包括格林威治时间、数据及计算机名称。
-g:加入GDI和用户资源的数目
logfile:指定用来写如信息的日志文件名称,默认的名称是: Memsnap.log.
5. 内存监视工具Poolmon.exe
这个工具可以监视内存中总共使用的页面数和非页面的"内存池",以探测内存中有无"空洞"存在.内存中的所谓"空洞"是指:本来可供使用、但实际上并未使用的区域.减少空洞可以提高内存的使用效率,防止内存的浪费.与使用别的命令行程序不同,这个程序需要在加载运行之后才可以得到"在线"的提示帮助信息.另外,这个工具还需要一个叫做gflags的程序来配合,更麻烦的是程序gflags也像前面介绍的有些程序一样,具有适应两种环境的版本.这种互相交叉的用法使得不熟悉它们相互关系的人感到眼花缭乱.下面结合Poolmon.exe的使用,对二者都先介绍命令行的版本.
1、 在使用Poolmon.exe之前,必须先运行gflags.可以在“开始-$#@62;运行”中键入cmd,点击确定打开命令行窗口,(注意:本文中所有命令行程序都可以先用cmd打开一个类似dos模式的窗口),然后在窗口中键入命令和参数,执行该命令行程序:gflags -r +ptg参数的含义到介绍gflags的GUI版本时再解释.
2、 执行后重新启动计算机.
3、 重新启动成功后,即可在命令行中执行 poolmon,其语法如下:
poolmon [itag] [xtag] [switch]
参数及说明:
itag :仅列出与内存池匹配的标记名字,标记名字中可以包含统配符?或*.
xtag :列出每个不与内存池匹配的标记名字,标记名字中可以包含统配符?或*.
参数后面还可以使用以下开关:
t :依据字母顺序列表. p :依据内存池类型列表.
a :依据内存分配的大小列表.f:依据自由内存列表.
d :依据分配和未分配之间的差异来列表.e :总合计列表.
b:依据使用的最大值列表 .m :依据分配的最大值列表.
L :对所显示信息的那些行,背景颜色的控制开关,默认是开(即以不同颜色来显示区别)
从我验证的印象看,按照上述步骤执行Poolmon 后,命令行窗口中以行列方式显示关于内存的信息,每一行对应一个tag名,活动部分的Tag行背景颜色与非活动部分不同.至于这些行的先后顺序和显示行的总数,决定于所用的开关参数.