内存文件映射是Windows的一种内存管理方法,提供了一个统一的内存管理特征,使应用程序可以通过内存指针对磁盘上的文件进行访问,其过程就如同对加载了文件的内存的访问。
通过文件映射这种使磁盘文件的全部或部分内容与进程虚拟地址空间的某个区域建立映射关联的能力,可以直接对被映射的文件进行访问,而不必执行文件操作也无需对文件内容进行缓冲处理,所有的文件缓存操作均由系统直接管理。
访问内存映像文件像使用虚拟内存一样,使用内存映像文件同样需要经过保留和提交两个过程,首先在进程内存空间保留一块区域,然后提交物理存储给这段区域。
不同的是物理存储来自于磁盘上的文件,而不是系统的分页文件。
也即将磁盘上指定的数据文件作为虚拟内存,这个实现过程被称为文件映像,可以将文件全部或部分映像到进程的地址空间中。
文件映像过以后,可以把文件映像的部分当作已全部被载入内存一样的去访问它。
内存泄露:指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。
内存泄漏解决方法:
1.非静态内部类创建静态实例造成的内存泄漏:将该内部类设为静态内部类或将该内部类抽取出来封装成一个单例即可;
2.Handler造成的内存泄漏:将Handler类独立出来或者使用静态内部类,这样便可以避免内存泄漏;
3.集合容器中的内存泄露:在退出程序之前,将集合里的东西“clear”,然后置为“null”,再退出程序;
4.WebView造成的泄露:为WebView另外开启一个进程,通过AIDL与主线程进行通信,WebView所在的进程可以根据业务的需要选择合适的时机进行销毁,从而达到内存的完整释放。