byte[] get(offset, length)
一般的に言えば、Java で 2GB を超えるメモリ マップト ファイルのメソッドをどのように実装しますか。
コンテキスト付き:
ランダム i/o で 2GB を超えるファイルを効率的に読み込もうとしています。もちろん、アイデアは Java nio とメモリマップ API を使用することです。
問題は、メモリ マッピングの 2GB の制限に伴います。解決策の 1 つは、2 GB の複数のページをマップし、オフセットを使用してインデックスを作成することです。
ここに同様の解決策があります:
Javaでソートされた(メモリマップされた?)ファイルでのバイナリ検索
このソリューションの問題は、API が読み取ることになっているときにバイトを読み取るように設計されていることですbyte[]
(したがって、API は のようなものになりますread(offset, length)
)。
get()
そのアルティメットをに変更するだけでうまくいくでしょうget(offset, length)
か?byte[]
i'm reading が 2 つのページの間にある場合はどうなりますか?