【发布时间】:2016-11-09 15:37:52
【问题描述】:
我正在使用多个线程读取一个 50 GB 的文件(只读),每个线程从文件中读取一个顺序段。我尝试了两种方法
- 使用文件通道
- 使用从 FileChannel 获得的 MemoryMappedBuffer
我原本期望 MemoryMappedBuffer 的性能优于 FileChannel,但 FileChannel 的性能持续提高了大约 30%。
我正在寻找解释。 我一次映射 1 GB 的内存,一旦用完,我会映射另一个 1 GB。
我的环境:Windows 7 平台 64 位至强 2.7 ghz 2 处理器
【问题讨论】:
-
Windows 7 平台 64 位至强 2.7 ghz 2 处理器
-
你有多少内存?如果你没有超过 50GB,FileChannel 应该更快(比使用虚拟内存)。
-
读取整个 50 gigs 文件的目的是什么?你不能部分处理它,让它适合你的内存吗?
-
32 GB 内存,但只有 20 个可用
-
@walkeros 我正在测试一种尽快读取此文件的方法
标签: java nio memory-mapping