学习windows内存管理过程中,会先有些疑问,然后在不断学习中得到解答,解答也是基于我的不断理解,未必完全正确。下面记录一些。
一。如果一个内存页没有被修改过,操作系统可以直接释放它(《windwos核心编程》第五版P362页的描述)。那是不是说明该内存页对应要有页交换文件,里面保持着原始的值?
答:不完全是。准确讲,是每个内存页都会有后备页面。但后备页面可以来自页交换文件(最容易理解的情况),文件映像(PE文件被加载时),内存映射文件(通过系统API创建)。在xp的进程管理器中,“虚拟内存大小”这一列,列出的应该是进程占用页交换文件的大小。有些进程的内存使用比虚拟内存大,其原因,可能是有些内存的后备页面不是页交换文件,比如进程加载的DLL,内存中的代码段的页面,其后备页面是来自DLL文件本身,并不占页交换文件(也就是不计入“虚拟内存”中)。顺便说一下,即使是“我的电脑”的“属性”的“高级”中设置“虚拟内存”大小为0(等同与设置页交换文件大小为0),系统还是会自动根据内存的大小,分配一定原始大小的页交换文件(据观察,是和内存差不多一样大)。如果设置了某大小的虚拟内存,其实是在系统的原始大小上的基础上,再加上设置的值。系统页交换文件总大小,可以通过GlobalMemoryStatus这个API来得到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)