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

标签 java arrays 64-bit

我有一个大文件,预计大约 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];

最佳答案

Java 数组索引的类型为 int(4 字节或 32 位),所以恐怕您仅限于 231 - 1 或 2147483647 个插槽你的阵列。我会将数据读入另一个数据结构,比如二维数组。

关于具有超过 4gb 元素的 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878309/

相关文章:

java - 打印字符串中使字符串与正则表达式匹配的部分

c - 在 Sakamoto 算法中查找 t[] 数组来查找星期几

java - 有没有更快的方法来比较 Java 中的两个 Int 数组?

java - 如何初始化具有超过 1 个成员变量的自定义数据类型数组?

python - 如何使用 python 在 Windows 64 位中调用 32 位 exe?

java - Java 8 中自定义流方法支持延迟/延迟并行的最佳方法

java - 如何禁用 SWT 文本中的粘贴操作

c# - 用于 64 位 C# 开发的 CodeSite 替代品

java - 使用 JMeter 将 JSON 字符串插入数据库

c - 使用 GCC 的两个有符号 64 位乘法