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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中list最多可以存储多少条数据?40万可以吗相关的知识,希望对你有一定的参考价值。

上面的很明显没有看懂题目
这是问list最多存储多少条数据,而不是存的每一条数据的大小

这应该是在于虚拟机内存的上限(我在刚刚成功存入了30000000+条后,内存不足了),究竟有没有上限我不敢确定

你可以使用以下代码进行尝试:
public static void main(String args[])
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<100000000;i++)
list.add(i);
if(i%10000000==0)
System.out.println("current i = "+i);
getFree();


System.out.println(list.get(99999999));


public static void getFree()
System.out.println("free:"+Runtime.getRuntime().freeMemory());
System.out.println("max:"+Runtime.getRuntime().maxMemory());
System.out.println("total:"+Runtime.getRuntime().totalMemory()+"\n");
参考技术A 要看是什么类型的list,list只是个接口,如果是Arraylist的话,应该是整型或者长整型的上限,有先类型无上限,但是真心不建议这么用,内存开销太大

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中list最多可以存储多少条数据?40万可以吗的主要内容,如果未能解决你的问题,请参考以下文章

excel最多能存储多少条数据

mysql最多存多少条数据

java 中的List 最大可以存放多少条数据

mysql 最多可以查询多少条数据

Excel最多可以放多少行数据?

mysql数据库一个表最多可以放多少条数据?mysql数据库怎么做分表?请高手指点一下,谢谢?