ArrayList——内存开销,时间上的开销

转载 2016年08月31日 11:07:57

ArrayList的内部存储的原理是数组,Object[]数组,默认长度为10,若是超过10,则自动扩容,规则是((旧容量*3)/2)+1

一、内存开销

若是存储利用ArrayList存储2个Object,会创建10存储空间,则会浪费8存储空间

若是存储利用ArrayList存储11个Object,会创建16存储空间,则会浪费5存储空间

若是存储利用ArrayList存储17个Object,会创建25存储空间,则会浪费8存储空间

若是存储利用ArrayList存储26个Object,会创建38存储空间,则会浪费12存储空间


以此类推,若是在项目中创建很多的ArrayList,岂不是浪费很多的存储空间



二、时间开销

如果数据量很大,那么造成数组重新分配的次数会增加,但对于一般的数据量下,

1千需要分配 11次

1万一级需要分配17次

10万 需要分配23次

100万需要分配28次





java基础入门-arraylist存储开销

今天我们来看一下arraylist的存储开销,因为在项目当中,我尝试了一个非常大的arraylist,然后内存爆了 所以我看了下源码,原来arraylist的存储开销是比较大的,先上代码 ...
  • raylee2007
  • raylee2007
  • 2015年06月29日 17:10
  • 1456

请教Java ArrayList的初始容量对性能的影响

向一个ArrayList集合里面存放一千万个int类型数据,当ArrayList初始容量为默认值时;需要3800多毫秒,初始容量为一万时,需要2300多毫秒,而当初始容量为十万时;需要3700多毫秒,...
  • u012273635
  • u012273635
  • 2018年01月11日 10:25
  • 29

关于ArrayList的初始容量以及扩容的效率问题

论坛的一个问题: 有这样一段很简单的代码:  ArrayList a = new ArrayList ();  a.addAll(b);  a.addAll(c);  其中Da...
  • lostinai
  • lostinai
  • 2015年11月13日 21:08
  • 2215

Java中ArrayList的内存分配

ArrayList不管怎么添加数据都是内存连续的
  • u011861049
  • u011861049
  • 2014年07月18日 21:13
  • 1400

图解Arraylist内存分配

1:集合内存分配以及初始化过程图解 2:源码解读ArrayList内部实现(数组结构) 构造ArrayList的时候,默认初始化容量为10,保存容器为 Object[] element...
  • u010267179
  • u010267179
  • 2014年03月22日 11:25
  • 428

ArrayList——内存开销,时间上的开销

ArrayList的内部存储的原理是数组,Object[]数组,默认长度为10,若是超过10,则自动扩容,规则是((旧容量*3)/2)+1 一、内存开销 若是存储利用ArrayList存储2个Ob...
  • chuntiandejiaobu10
  • chuntiandejiaobu10
  • 2016年08月31日 11:07
  • 448

ArrayList内存分配

ArrayList就是动态数组,也是一个对象。 创建一个ArrayList对象,该对象存放在堆内存中,且是一个内存连续的内存区域。...
  • dhdhdh0920
  • dhdhdh0920
  • 2015年01月13日 17:31
  • 960

测试hashmap 内存消耗情况 两种遍历方式耗时情况

package test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import ...
  • okkeqin
  • okkeqin
  • 2016年05月26日 18:13
  • 1035

存储一个图的内存开销

邻接表存法: HashMap>的做法就不说了,这个最吃内存,开销肯定最大。 其余的:   3倍整型数组 Total Memory = 127991808 Used Memory =    ...
  • cloudeagle_bupt
  • cloudeagle_bupt
  • 2015年07月13日 11:00
  • 414

JAVA数据结构---动态扩展内存自定义ArrayList

代码分为2个部分: 向量类:MyArrayList.java 测试类:MainTest.java向量类:MyArrayList.java@SuppressWarnings("unchecked")...
  • hest0001
  • hest0001
  • 2016年03月15日 11:49
  • 178
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ArrayList——内存开销,时间上的开销
举报原因:
原因补充:

(最多只允许输入30个字)