注:此文章是我个人理解,可能有错误,不能作为编程依据。
进程工作集
内存管理器给每个进程指派的一部分物理内存,若进程需要的页在工作集中,则不会出现页面中断错误。
若访问的页在工作集中,则读取;
不在则调入:
1.有空闲:调入
2.无空闲块:无法扩展工作集:
调出旧页面到《备用列表》,已修改的页面导入《已修改列表》进行存盘,然后导入《备用列表》;未修改的页面直接导入《备用列表》,最后调入使用。
可以扩展工作集
则扩展工作集(下面的1,2,3)
(1)《自由列表》:已退出进程释放的数据页
(2)《清零列表》:刚释放的页面,结果清零线程清零
(3)《备用列表》:《已修改列表》写入磁盘后收回的页面,其中内容还没有被清除
名词:
可用数: 1+2+3
系统缓存: 备用+系统工作集
提交大小: 交换区总大小(我认为应该是包含进程的后备存储器和C盘的交换文件,在内存中的映射都有自己的后备存储器,若数据发生改变则会转移到C盘的交换文件 中,因此我们看到提交大小比较大,但是C盘的交换文件并没有那么大。呵呵)
工作集: 实际物理内存(专用《进程自己》+共享《加载的DLL占用的物理内存》)
所谓的缩减工作集, 我的理解就是强制缩减进程工作集包括自身和DLL,首先将不用的没有修改的物理页面解除映射,直接还给系统;
然后将修改的保存到《修改列表》存盘(我觉得应该是C盘交换区) 再挂到备用列表 还给系统,这样就还了一些“物理内存”。
当然还有一种比较变态的挤压法,占用大量内存,强制将那些正在使用的,没有使用的,修改的,没有修改的刷到后备存储器,很暴力,让大家卡死,然后挤压者很爽。
而缩减页面文件使用,我觉得应该是退掉一些进程。不知对否