4.
内存快照 这个工具可以将所有
内存资源的消耗情况写进一个日志文件中,供以后分析使用,有点
类似"快照"的方式.日志文件使用的默认名字是Memsnap.log,当然在建立这个日志文件时,也可以用其它你认为合适的名字。在win98和CW2KP中,
系统信息中都有一个和这个工具的作用类似的
程序:DrWatson,俗称“系统快照”。Win98中的DrWatson
功能过于简单,到了CW2KP中,DrWatson的
功能大大加强,特别是对出错程序列出的信息很详细,如果使用得当,对付出错程序的效果还是理想的.至于显示出的信息,大部分都与
CPU的寄存器和程序的堆栈有关,属于底层信息,对一般
用户的参考价值不大。
6 N9 l0 V9 E t, V9 o. p' E MemSnap完整的语法为:
/ d9 O3 W# O' ?5 S9 ~. f memsnap[-t][-g][-?][logfile]
+ `$ \* D' `4 W6 E t$ m8 {1 V2 o- S
参数及说明:
( _5 c4 E* x! D2 ]" a+ m1 E
-t:加入标记信息,包括格林威治时间、
数据及
计算机名称。
! i) V$ v0 [7 O5 v -g:加入GDI和用户资源的数目
3 Y( d; G4 \- n/ i1 @/ A' P2 q logfile:指定用来写如信息的日志文件名称,默认的名称是:Memsnap.log.
9 P1 x* v5 S" I8 N2 s5 {# d
5.内存监视工具Poolmon.exe
8 S) X! {/ e6 q+ q9 M: m 这个工具可以监视内存中总共使用的页面数和非页面的"内存池",以探测内存中有无"空洞"存在.内存中的所谓"空洞"是指:本来可供使用、但实际上并未使用的区域.减少空洞可以提高内存的使用效率,防止内存的浪费.与使用别的命令行程序不同,这个程序需要在加载运行之后才可以得到"在线"的提示帮助信息.另外,这个工具还需要一个叫做gflags的程序来配合,更麻烦的是程序gflags也像前面介绍的有些程序一样,具有适应两种环境的版本.这种互相交叉的用法使得不熟悉它们相互关系的人感到眼花缭乱.下面结合Poolmon.exe的使用,对二者都先介绍命令行的版本.
0 ~7 @; |) m' v9 J3 i, t7 t
1、在使用Poolmon.exe之前,必须先运行gflags.可以在“开始-$#@62;运行”中键入cmd,点击确定打开命令行窗口,(注意:本文中所有命令行程序都可以先用cmd打开一个类似dos模式的窗口),然后在窗口中键入命令和参数,执行该命令行程序:gflags-r+ptg 参数的含义到介绍gflags的GUI版本时再解释.
+ G( m# M& w( M& e1 ?6 f7 Z/ t 2、执行后重新启动计算机.
2 ]1 }- M9 ]. s2 j" i4 H 3、重新启动成功后,即可在命令行中执行poolmon,其语法如下:
, M9 y$ g# J1 A, J4 | poolmon[itag][xtag][switch]
- h. O( F7 ^5 h9 w4 P! g, p$ ~
参数及说明:
& j# |$ Q& ^# v- q
itag:仅列出与内存池匹配的标记名字,标记名字中可以包含统配符?或*.
0 w- x, A1 @5 n6 o) Z2 r+ L
xtag:列出每个不与内存池匹配的标记名字,标记名字中可以包含统配符?或*.
# \: H \/ Q( D @; X 参数后面还可以使用以下开关:
9 F& t2 u G& \
t:依据字母顺序列表. p:依据内存池类型列表.
6 `: g* d7 p1 j. F+ \1 Y, y' Z7 N
a:依据内存分配的大小列表. f: 依据自由内存列表.
9 K' B* A% ^& k) }
d:依据分配和未分配之间的差异来列表. e:总合计列表.
5 l$ g/ C; h h1 a/ \0 l t b:依据使用的最大值列表. m:依据分配的最大值列表.
4 h0 }- X% J2 e. x" ?6 G- }8 G
L:对所显示信息的那些行,背景颜色的控制开关,默认是开(即以不同颜色来显示区别)
% J% w0 I ] Y" J* e; `% O3 i 从我验证的印象看,按照上述步骤执行Poolmon后,命令行窗口中以行列方式显示关于内存的信息,每一行对应一个tag名,活动部分的Tag行背景颜色与非活动部分不同.至于这些行的先后顺序和显示行的总数,决定于所用的开关参数