我认为mmap不能像使用虚拟内存那样快,它仍然具有硬盘I / O。
但是互联网上的许多人都说它很快,但是没有理由。
在测试中,我使用BufferedReader和MappedByteBuffer读取文件,第一个更快。
最佳答案
MappedByteBuffer
适用于读取未顺序读取的二进制文件。
一个示例是读取包含以下内容的数据库索引文件
树数据结构,文件偏移到文件的其他部分。在这
在这种情况下,您不断在文件中寻找前进和后退的位置,
读取数据并
我的测试表明,使用MappedByteBuffer
比使用RandomAccessFile
快得多BufferedReader
。
用BufferedInputStream
顺序读取文本文件或二进制文件
或MappedByteBuffer
是有效的。使用通常没有优势
一个内存映射文件,以及管理内存映射的开销BufferedReader
可能会比BufferedInputStream
或慢。
关于java - 为什么人们说MappedByteBuffer的mmap更快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7200690/