一尘不染

具有超过4GB元素的Java数组

java

我的文件很大,预计约为12 GB。我想将它们全部加载到功能强大的具有16 GB RAM的64位计算机上的内存中,但是我认为Java不支持那么大的字节数组:

File f = new File(file);
long size = f.length();
byte data[] = new byte[size]; // <- does not compile, not even on 64bit JVM

Java有可能吗?

Eclipse编译器的编译错误是:

Type mismatch: cannot convert from long to int

javac给出:

possible loss of precision
found   : long
required: int
         byte data[] = new byte[size];

阅读 253

收藏
2020-09-08

共1个答案

一尘不染

Java数组索引的类型int(4个字节或32位),因此恐怕您的数组只能使用2 31 −
1或2147483647个插槽。我将数据读入另一个数据结构,例如2D数组。

2020-09-08