程序中写filemaping 的时候会造成“页面错误”,在任务管理器上
能够看到页面错误会增长,但程序本身没什么异常反映,请高手解释一下
这个问题(是不是有解决必要或怎样解决)

解决方案 »

  1.   

    页面错误是访问的虚拟内存地址不在物理内存中发生的异常,操作系统会暂时终止程序运行并处理这个异常,从虚拟内存交换文件或者mapping的文件中把数据读取到物理内存,然后再恢复程序运行。所以程序不会感觉到这个异常的存在。没有必要解决,用filemapping肯定会发生很多页面错误。即使不用filemapping,任何程序多少都会有一些页面错误,使用的虚拟内存越大,页面错误就越多。但是如果页面错误太多就会降低程序的运行速度,有时候这个影响非常大,通常是因为虚拟内存使用太多引起,这个时候应该设法解决这个问题,解决方法是增加内存总量,以及加大进程工作集大小,最有效的办法是把常用的虚拟内存锁定在物理内存中。而filemapping虽然页面错误很多,但是一般不会影响效率。
      

  2.   

    谢谢stonespace(stonespace)!
    我明白一些了。