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

标签 java mmap

我认为 mmap 没有使用虚拟内存快,它仍然有硬盘 I/O。

但是网上很多人说它很快,但没有理由。

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

最佳答案

MappedByteBuffer 适用于读取非顺序读取的二进制文件。

一个例子是读取包含的数据库索引文件 具有文件偏移量的树数据结构到文件的其他部分。在这个 在这种情况下,您不断地在文件中向前和向后寻找并且 读取数据和 我的测试表明使用 MappedByteBuffer 比使用 RandomAccessFile.

使用 BufferedReader 顺序读取文本文件或二进制文件 或 BufferedInputStream 是高效的。使用通常没有优势 为此的内存映射文件和管理内存映射的开销 可能会使 MappedByteBufferBufferedReaderBufferedInputStream 慢。

关于java - 为什么人们说 MappedByteBuffer 的 mmap 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7200690/

相关文章:

java - Spring Boot - 从外部目录加载 applicationContext.xml

linux - 为什么MMIO空间作为单个PTE映射到/dev/mem所以没有struct page?

c - 在 mmap 中使用灵活的数组成员

c - 如何将 mmap 传递给 C 中的 execve 函数?

c - 使用结构指针访问 mmap 区域

java - JNI MMAP 内存泄漏

java - 即使重新启动后也保持服务始终运行

Java 全局命名空间访问

java - thymeleaf 中 String 对象的 #strings.replace() 实用方法是否替换了提供的字符串中的所有匹配项?

java - KeyListener 无法与 Java 中的 MediaPlayer 一起正常工作