java中数组的最大长度以及List的最大容量
来源:互联网 发布:杭州java工资 编辑:程序博客网 时间:2024/06/05 06:51
java 中数组的最大长度是多少呢?看一下它的length属性就可以了。length属性是32位的有符号整数,它的最大值是2的31次幂,就是2G。为何有这个限制呢?为什么length的属性不是long型呢?我们假设一下,如果它是long型的,那么它的最大长度是2的63次幂。内存永远也不会有那么大吧。即使是字节数组长度是int的,最大长都达到2GB.
由此想到了String,这个家伙底层也是基于数组的,是一个字符数组。字符是16位的基本类型,一个String的最大长度是多少呢?就是字符数组的最大长度也是2G,占用内存是4GB。
一个数组最大的长度是一个 int 的最大值,也就是 2147483647,而一个字符串在 Java 内部是使用 char[] 来表示的,也就是说一个字符串的最大长度是 2147483647。
不过这些都是理论值,具体能放多少与 JVM 内存有关, 可以在执行 java 命令时加上 -Xmx 1024m 就将 JVM 内存最大置为了 1G, 默认情况下是 64MB.
可以写一个String[]死循环添加数组,消耗内存,看看会不会死机。
从语言上来看,java.util.List是个接口,其下有N多实现,最常用的是ArrayList和LinkedList及其各种继承或同步化实现(如Vector/Queue/Stack这些的)ArrayList内部是拿数组存储,那么上限就是Integer.MAX_VALUELinkedList内部是个链表,理论上是无限的。另外,List里放的东西都是在内存里的(当然你也可以自己实现一个放磁盘上的),因此能放多少也取决于放的东西的大小以及种类。大小方面很容易计算,一个对象如果1K,那400,000个就至少要占用400M的内存(不算其他占用)。而虚拟机内存分类方面,如果是普通对象,一般占用的都是堆(Heap)空间,如果是常量或是类似String.intern()出来的东东,则占用的是永生带(Permanent Generation)。实际开发中,虚拟机默认内存大小根据不同的虚拟机实现有所不同,可以在启动应用时用-Xmx调整最大堆大小,比如调整堆最大大小为2G:一般四五十万的数据是放得下的。
阅读全文
0 0
- java中数组的最大长度以及List的最大容量
- Java 数组的最大长度 位图集合的最大长度
- C++中数组的最大长度
- java数组的最大长度是多少?
- java中字符串的最大长度?
- java中String类型的最大长度
- 比较List<String>中元素,获取长度最大的元素。
- access的最大容量
- Access 的最大容量
- Access 的最大容量
- access的最大容量
- .net中HashTable的最大容量
- .net中HashTable的最大容量
- .net中HashTable的最大容量
- .net中HashTable的最大容量
- .net中HashTable的最大容量
- .net中HashTable的最大容量
- .net中HashTable的最大容量
- jQuery 遍历
- Fragment+Viewpager的预加载与懒加载
- jQuery 的几个插件
- css之margin相关的问题以及解决办法
- Zookeeper系列—集群安装
- java中数组的最大长度以及List的最大容量
- 初学者最常问的几个问题
- S12动态内存
- 系统服务JNI的实现分析
- 从CNN视角看在自然语言处理上的应用
- 取消studio自动生成的作者名和日期的注释
- HTML DOM setTimeout() 方法
- SSH的增删改查(通过AJAX查询显示)
- JavaScript专题系列20篇正式完结!