乐趣区

关于java:Java数组最大长度

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

退出移动版