【发布时间】:2011-07-02 07:57:20
【问题描述】:
一般可以这么说:你如何在Java中为大于2GB的内存映射文件实现byte[] get(offset, length)方法。
有上下文:
我正在尝试使用随机 i/o 有效读取大于 2GB 的文件。当然这个想法是使用 Java nio 和内存映射 API。
问题在于内存映射的限制为 2GB。一种解决方案是映射多个 2GB 的页面并通过偏移量进行索引。
这里有一个类似的解决方案:
Binary search in a sorted (memory-mapped ?) file in Java
这个解决方案的问题是它被设计为读取字节,而我的 API 应该读取 byte[](所以我的 API 类似于 read(offset, length))。
将最终的get() 更改为get(offset, length) 会起作用吗?当我正在阅读的byte[] 位于两页之间时会发生什么?
【问题讨论】:
标签: java performance io nio memory-mapping