java.util.List 的大小

本文深入分析了Java List对象的size()方法返回类型为int的问题,通过实验验证了实际存储容量远超int类型最大值2147483647个。同时,实验表明当尝试存储超过Long.MAX_VALUE个元素时,程序会因内存溢出错误而崩溃。进一步探讨了Long类型最大数值9223372036854775807是否能够成功存储,并揭示了内存分配机制的限制。
摘要由CSDN通过智能技术生成

今天在看API的时候,忽然看见List对象的size()方法返回的是int类型,于是就想知道是不是只能存放int的最大数值2147483647个。

但是,用自己电脑跑了一下,代码如下:

public static void main(String[] args) {
List<String> list = new ArrayList<String>();
for(long i = 0 ; i < Long.MAX_VALUE ; i++){
list.add("" + i);
System.out.println(i);
}
}

跑到11451102就内存溢出了,

11451098
11451099
11451100
11451101
11451102
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.add(ArrayList.java:351)
at com.peter.list.AboutListSize.main(AboutListSize.java:14)

而且,不知道哪位大神有没有跑多,Long类型的最大数9223372036854775807能不能跑到呢?


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值