2025年java中数组的最大长度以及List的最大容量

java中数组的最大长度以及List的最大容量java 中数组的最大长度是多少呢 看一下它的 length 属性就可以了 length 属性是 32 位的有符号整数 它的最大值是 2 的 31 次幂 就是 2G 为何有这个限制呢 为什么 length 的属性不是 long 型呢 我们假设一下 如果它是 long 型的 那么它的最大长度是 2 的 63 次幂 内存永远也不会有那么大吧 即使是字节数组长度是 int 的 最大长都达到 2GB 由此想到了 String

大家好,我是讯享网,很高兴认识大家。

由此想到了String,这个家伙底层也是基于数组的,是一个字符数组。字符是16位的基本类型,一个String的最大长度是多少呢?就是字符数组的最大长度也是2G,占用内存是4GB。

一个数组最大的长度是一个 int 的最大值,也就是 ,而一个字符串在 Java 内部是使用 char[] 来表示的,也就是说一个字符串的最大长度是 。
不过这些都是理论值,具体能放多少与 JVM 内存有关, 可以在执行 java 命令时加上 -Xmx 1024m 就将 JVM 内存最大置为了 1G, 默认情况下是 64MB.


讯享网

从语言上来看,java.util.List是个接口,其下有N多实现,最常用的是ArrayList和LinkedList及其各种继承或同步化实现(如Vector/Queue/Stack这些的) ArrayList内部是拿数组存储,那么上限就是Integer.MAX_VALUE LinkedList内部是个链表,理论上是无限的。 另外,List里放的东西都是在内存里的(当然你也可以自己实现一个放磁盘上的),因此能放多少也取决于放的东西的大小以及种类。 大小方面很容易计算,一个对象如果1K,那400,000个就至少要占用400M的内存(不算其他占用)。 而虚拟机内存分类方面,如果是普通对象,一般占用的都是堆(Heap)空间,如果是常量或是类似String.intern()出来的东东,则占用的是永生带(Permanent Generation)。 实际开发中,虚拟机默认内存大小根据不同的虚拟机实现有所不同,可以在启动应用时用-Xmx调整最大堆大小,比如调整堆最大大小为2G: 一般四五十万的数据是放得下的。

讯享网

小讯
上一篇 2025-03-13 18:23
下一篇 2025-02-17 10:02

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/29978.html