1. 概述
本文咱们看一下 Java 数组的最大长度。
2. Max Size
Java 中只能定义一个确定大小的数组,它的最大值取决于我咱们应用的 JVM 和零碎。因为数组的索引是 int,所以最大的索引是 2^31-1。数组实践上能够存储 2147483647 个元素。
上面的示例中,在 Linux 和 Mac 上应用 Java8 和 Java15 的 OpenJDK 和 OracleJDK,在整个测试过程中,后果都是一样的。
验证代码:
public class Hello {public static void main(String[] args) {for (int i = 2; i >= 0; i--) {
try {int[] arr = new int[Integer.MAX_VALUE - i];
System.out.printf("Max-Size: %s\n", arr.length);
} catch (Throwable t) {t.printStackTrace();
}
}
}
}
在 Linux 或 Mac 平台上执行下面的代码雷同的后果。执行期间传递参数:VM arguments -Xms2G -Xmx2G,返回上面异样信息
留神到第一个异样与后两个异样不同。后两个谬误提到了 VM 限度,而第一个谬误是对于堆内存限度。
上面来试一下用 VM arguments _-Xms9G -Xmx9G _来执行看一下:
后果能够看到最大值为 2,147,483,645。
这个后果同样实用于 byte、boolean、long 和其余数据类型。
3. ArraySupport
ArraySupport 是 OpenJDK 的工具类,倡议数组的最大长度为 Integer.MAX_VALUE-8。
4. 总结
本文咱们看到了 Java 中数组的最大长度。