为什么人们说MappedByteBuffer的mmap更快?

Hes*_*sey 1 java mmap

我认为mmap并不像使用虚拟内存那么快,它仍然具有硬盘I/O.

但互联网上的很多人都说这很快,但没有理由.

在我的测试中,我使用BufferedReader和MappedByteBuffer读取文件,第一个更快.

Sim*_*n C 8

A MappedByteBuffer适用于读取不按顺序读取的二进制文件.

一个示例是读取包含树数据结构的数据库索引文件,该文件具有文件偏移到文件的其他部分.在这种情况下,你不断在文件中寻找前进和后退并读取数据,我的测试显示使用a MappedByteBuffer比使用a快得多 RandomAccessFile.

读取文本文件或文件二进制顺序用BufferedReader 或者BufferedInputStream是有效的.使用内存映射文件通常没有优势,管理内存映射的开销可能MappedByteBuffer比a BufferedReader或更慢BufferedInputStream.