mar*_*ssi 11 java io performance nio memory-mapping
通常可以说:如何byte[] get(offset, length)为Java中大于2GB的内存映射文件实现一种方法.
有了上下文:
我正在尝试使用随机i/o高效读取大于2GB的文件.当然,这个想法是使用Java nio和内存映射API.
问题是内存映射限制为2GB.其中一个解决方案是映射多个2GB的页面并通过偏移量进行索引.
这里有一个类似的解决方案:
这个解决方案的问题在于它设计为在我的API应该读取时读取字节byte[](因此我的API就像这样read(offset, length)).
是否只是努力将这种终极get()变为get(offset, length)?当byte[]我在阅读两页之间时会发生什么?
不,我对排序(内存映射?)中的二进制搜索的回答无法更改,get()因为get(offset, length)内存映射文件数组边界,就像您怀疑的那样。我可以看到两种可能的解决方案: