内存映射文件是一种允许Java程序直接从内存访问的特殊文件。
通过将整个文件或者文件的一部分映射到内存中、操作系统负责获取页面请求和写入文件,应用程序就只需要处理内存数据,这样可以实现非常快速的IO操作。
用于内存映射文件的内存在Java的堆空间以外。
Java中的java.nio包支持内存映射文件,可以使用MappedByteBuffer来读写内存。
优点:
(1)性能:内存映射文件比通过普通的IO来访问文件要快
(2)能够加载普通方式无法访问的大文件
(3)另外一个优势是这些文件能够共享,在进程间提供共享内存,而且比普通的基于loopback接口的Socket要快10倍
缺点:
有增加页面错误(page fault)的可能,因为操作系统仅仅加载一部分文件到内存中,如果被请求的页面不在内存中那就会导致一个页面错误