内存映射文件:MappedByteBuffer
内存映射文件能让你创建和修改那些因为太大而无法放入内存的文件。有了内存映射文件,你就可以认为文件已经全部读进了内存,然后把它当成一个非常大的数组来访问。这种解决办法能大大简化修改文件的代码。
FileChannel提供了map方法来把文件影射为内存映像文件:
fileChannel.map(FileChannel.MapMode mode, longposition, long size)将此通道的文件区域直接映射到内存中。注意,你必须指明,它是从文件的哪个位置开始映射的,映射的范围又有多大;也就是说,它还可以映射一个大文件的某个小片断。
更突出的优势是共享内存,内存映射文件可以被多个进程同时访问,起到一种低时延共享内存的作用。
内存映射文件是一种允许Java程序直接从内存访问的特殊文件。通过将整个文件或者文件的一部分映射到内存中、操作系统负责获取页面请求和写入文件,应用程序就只需要处理内存数据,这样可以实现非常快速的IO操作。用于内存映射文件的内存在Java的堆空间以外。Java中的java.nio包支持内存映射文件,可以使用MappedByteBuffer来读写内存。MappedByteBuffer是ByteBuffer的子类,因此它具备了ByteBuffer的所有方法。
本文介绍了内存映射文件的概念及其实现方式,通过FileChannel的map方法,可以让开发者以数组形式访问文件,适用于处理大型文件。内存映射文件能够简化代码,并支持多个进程间的共享内存访问,提高IO操作效率。
392

被折叠的 条评论
为什么被折叠?



