Java内存映射,上G大文件轻松处理

内存映射文件(Memory-mApped File),指的是将一段虚拟内存逐字节映射于一个文件,使得应用程序处理文件如同访问主内存(但在真正使用到这些数据前却不会消耗物理内存,也不会有读写磁盘的操作),这要比直接文件读写快几个数量级 。
稍微解释一下虚拟内存(很明显,不是物理内存),它是计算机系统内存管理的一种技术 。像施了妖法一样使得应用程序认为它拥有连续的可用的内存,实际上呢,它通常是被分隔成多个物理内存的碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换 。
内存映射文件主要的用处是增加 I/O 性能,特别是针对大文件 。对于小文件,内存映射文件反而会导致碎片空间的浪费,因为内存映射总是要对齐页边界,最小单位是 4 KiB,一个 5 KiB 的文件将会映射占用 8 KiB 内存,也就会浪费 3 KiB 内存 。
JAVA.nio 包使得内存映射变得非常简单,其中的核心类叫做 MappedByteBuffer,字面意思为映射的字节缓冲区 。
01、使用 MappedByteBuffer 读取文件
假设现在有一个文件,名叫 cmower.txt,里面的内容是:

沉默王二,一个有趣的程序员


    推荐阅读