java中数组最多可以放置多少个元素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中数组最多可以放置多少个元素?相关的知识,希望对你有一定的参考价值。

java数组用int做引索,最大容量2G=2 147 483 639个元素空间。
同时受“可用内存空间”的大小限制。
java每个对象元素实际占用内存都大于12字节,即使你有16GB内存,也不够2G个对象。
参考技术A 理论值是Integer.MAX_VALUE个,但实际是依赖jvm内存,数值远小于最大个数内存就用没了

java中list最多可以存储多少条数据?40万可以吗

从语言上来看,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:
所以40万是放得下的
参考技术A 从语言上来看,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:
所以40万是放得下的
参考技术B 从语言上来看,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:
所以40万是放得下的
参考技术C 理论上是没有上线的 40万 可以的 你可以参考 这个 https://www.zhihu.com/question/20171726

以上是关于java中数组最多可以放置多少个元素?的主要内容,如果未能解决你的问题,请参考以下文章

数组最多能有多少个元素

单片机C语言数组最多能定义多少个元素?

java的byte数组最多存储多少字节?只用FileInputStream读取文件和只用FileOutputStream写入文件会出问题吗

如何使用 Java 中的数组

如何找出数组中出现次数超过长度一半的元素

数组