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中数组的最大长度。