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