表格中的内容来自:http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/core/fneb_mon_oyjs.mspx?mfr=true
在任务管理器的性能面板中,通过“查看”菜单中选择“显示核心时间”,可以查看应用程序调用操作系统服务所占用的CPU时间,剩余的时间,即用户模式,是运行应用程序本身的代码所占用的时间。
CPU Usage CPU使用 | |
MEM Usage 内存使用 | 虚拟内存的使用量( 虚拟内存(Virtual Memory)是Windows管理所有可用内存的方式) |
Total Handles 总句柄数 | |
Total Threads 总线程数 | |
Total Processes 总进程数 | |
Physical Memory: Total 物理内存:总量 |
|
Physical Memory: Available 物理内存:可用量 | 包括清零的,释放的和待分配内存。 |
Physical Memory: File Cache 物理内存:文件缓存 | Amount of physical memory, in kilobytes, released to the file cache on demand. 文件缓存占用的物理内存。 |
Commit Charge: Total 认可用量:总数
| 所有进程使用的虚拟内存量 |
Commit Charge: Limit 认可用量:限制 | 不扩大页面文件的情况下,可供分配的虚拟内存总量。 |
Commit Charge: Peak 认可用量:峰值 | 虚拟内存的峰值用量,如果虚拟内存增大,可能会超过认可用量的限制值。 |
Kernel Memory: Total 核心内存:总量 | 页面和非页面内存的总量 |
Kernel Memory: Paged 核心内存:页面 | 操作系统占用的页面池容量。 |
Kernel Memory: Nonpaged 核心内存:非页面 | 操作系统占用的非页面池容量。 |
关于内存这部分把我弄晕了,对我来说又没有什么太重要的意义,算了,有心人可以看下面牛人写的:
虚拟内存,物理内存,页面文件,还有任务管理器
[quote]发信人: Hakkk (蓝猫淘气3k问·荷兰篇), 信区: NewSoftware
标 题: 虚拟内存,物理内存,页面文件,还有任务管理器
发信站: 水木社区 (Tue Nov 20 21:56:20 2007), 站内
虚拟内存(Virtual Memory)是Windows管理所有可用内存的方式。
对于32位Windows系统,每个进程所用到的虚拟内存地址从0到2^32-1,总容量4GB,
其中2GB是与操作系统以及其他所有进程所共享,
另外2GB分派给进程独占(这就是常说的32位Windows中一个进程最多能用2G内存的由来)。
4GB虚拟地址空间(Virtual Address Space,VAS)中,2GB的进程独占VAS是进程隔离的,
换句话说,每个进程都可以从RAM或者硬盘上映射到属于自己的2GB VAS。
所以虽然32位Windows每个进程最多只能获得4GB可用虚拟内存,
但是所有进程总和可以使用总量超过4GB的虚拟内存。
可惜XP只支持4GB RAM,也就是说超出部分一定得靠页面文件补足;
而比如2003企业版通过PAE支持32GB RAM,可以减少页面文件的用量。
(但单个进程最多仍然只有4GB虚拟内存地址空间,而不是32GB)
所以,一个简单的计算示例:
三个进程最多能用掉多少VAS?
2GB(共享)+2GB(独占)×3=8GB
这4GB的虚拟地址空间,按照4KB的大小进行分页(page),
然后以页为单位映射到实际存储单元中,包括:
·物理内存(RAM)
·页面文件(Page File,在Win9x中称为交换文件Swap File,即win386.swp)
·其他文件自身(比如一些长时间未活动的进程的exe文件自身)
可见,通常人们所说的虚拟内存实际上只是指其中的页面/交换文件而已,
这是对虚拟内存的一个错误的理解。
虚拟内存≠页面文件
RAM中除了保存最近读写的文件缓存(File Cache,相当于Win9x中的Vcache)
主要用来存储正在使用的程序代码和数据,
当RAM资源紧张,或者有程序码或数据长时间未使用时,
XP通常会将非活跃程序码所在的地址页映射回程序文件(exe、dll等),
将数据所在的地址页映射到页面文件(pagefile.sys)中并拷贝数据,
然后将它们本来占用的RAM空间释放。
这个过程称为页出(Page Out)。
当系统读取某个虚拟内存地址,而该地址所在的页不在RAM中时,
将产生一个页面错误(Page Fault)中断,
告诉系统从页面文件或者程序文件中取回包含该地址的虚拟内存页,
即将内容拷回到RAM并建立新的虚拟地址映射,并将页面文件中对应部分标记为未使用,
这个过程就是页入(Page In)。
页入成功的话就是一个Valid Page Fault,否则就是Invalid Page Fault。
前者非常普遍,(可以在任务管理器的进程页监视到)
而后者是由程序或硬件错误引起,
如果发生在进程上会导致非法操作,如果是系统自身则很可能蓝屏。
内存用量可以在任务管理器的性能页中看到。
其中物理内存的总量、可用数等是指安装的RAM容量和剩余RAM容量,
而内存使用或者提交更改的总量和限制是指虚拟内存的Commit Limit和Committed Bytes,
可以理解成系统可以使用的虚拟内存总量和当前使用量,
其中总量是由RAM大小+页面文件大小决定的。
而在任务管理器的进程页中,“内存使用”和“虚拟内存大小”造成的误解很多,
而实际上,这两个值是对应性能监视器中该进程的Working Set和Private Bytes,
Working Set是指一个进程的4GB虚拟地址空间中被映射到RAM中的部分的大小,
通常是该进程的虚拟内存中的活跃部分。
表面看来这个表述和“进程占用的RAM大小”没有太大区别,
但至少有两种情况导致了例外的发生:
第一种是这部分虚拟内存如果是属于2G的系统共享虚拟内存,
那么它映射到的RAM地址可能和其他进程有重复,计算多个进程占用RAM总和就不正确,
使得所有进程的Working Set之和比实际占用RAM要大。
第二种是一个进程中可能有同一段RAM内容的多个引用,比如一个文件被loop多次,
此时虚拟空间中会有多段地址被映射到同一段RAM上,
从而造成该进程的Working Set比实际占用RAM要大。
Private Bytes是一个进程的2GB独占虚拟地址空间中用到的部分的大小,
无论这部分是在RAM中还是在页面文件中,甚至是在exe、dll等文件中。
所以,任务管理器进程页中的虚拟内存绝对不反映pagefile.sys的用量。
所以,任务管理器无论是进程页还是性能页都不能直接反映pagefile的使用情况,
诸如“关掉pagefile还能看到虚拟内存”之类的疑问,应该很清楚了。
下面是一个简单图示,
两个进程,各自拥有2G独占VAS,共同拥有2G共享VAS,
W代表映射到RAM中的部分(Working Set),P代表页出的部分。
0 …………………2GB独占内存……………… 2G ………2GB共享内存……… 4G
进程1 |--PPPP---------------WW-----PPPP--------|
\\ || \\
\\ || \\
\\ || |||| |--PPPPPPPPPPPP--WWWWWWWW--|
exe2 exe1 dll RAMemory pagefile.sys |||||||||||| ||||||||
|||| /// // / || | 共享内核/dll等 共享RAM空间
进程2 |-PPPP------PPP---WW--WW------PP----P----|
然后,任务管理器的进程页中的“内存”就是上图中的W,
所以所有进程的内存项加起来肯定比实际用的RAM大,因为有共享部分
此外还有重复引用,比如上图中进程2独占内存中第二和第三个W指向同一段RAM空间。
而任务管理器进程页中的“虚拟内存”就是上图中右半部分,“独占VAS”。
可见pagefile只是其中的一部分,而RAM,只要用于独占VAS,一样计入了该处“虚拟内存”
。
最后,实际的页面文件用量(pagefile.sys中实际使用部分),
可以在性能监视中看到,即Paging File下的% Usage和% Usage Peak
配合当前pagefile.sys的大小就可以计算出字节数,
这个值可以做为设定页面文件最小值的一个参考,
而不是用任务管理器进程页的所有进程的虚拟内存大小相加做为页面文件最小值的参考。