@
yyfearth 这里有个坑要说一下
把虚拟内存放在真实内存里,除了会导致内存本身的缓存功能降低以外,还会导致休眠功能无法使用。
因为休眠功能要把内存里的数据保存在休眠文件中,在下次启动的时候,把休眠文件里的数据读入内存的时候,会没有办法读到虚拟内存里的数据 (因为虚拟内存的数据在虚拟硬盘上,而虚拟硬盘是应用程序,无法接管启动过程) 所以会蓝屏。
另外,考虑到页面文件用不到的情况,还不如放在HDD上。而且多数情况下ramdisk会降低系统整体性能。
至于你说的强制要求使用页面文件,其实也是windows上的一个坑,内存使用与内存占用不同。内存使用是 private working set 而内存占用是 commit charge 所以如果一个程序申请了1G的内存但是只用了10M,你就会发现 commit 占了1G而内存占了10M。所以会出现即使还有很多物理内存空着却出现内存不足的提示。这种情况下才会用到页面文件,windows会自动把页面文件上的地址分配给程序,所以1014M在页面文件上 (而且实际上不会读写这个文件) 而剩下的10M在内存里。
这个问题我研究了好久才搞清楚。windows坑多小心。