JAVA ArrayList clear() gc()垃圾回收
2016-07-29 15:23
302 查看
下载LOFTER我的照片书 |
一、一个简单的例子
代码图
图1
图1为上代码图的运行结果,说明在创建了一个大小为100W的列表后,内存分配了一定大小的空间,在clear() 之后,调用gc()垃圾清除后得到创建列表以后的内存大小.
图2
如果将代码中第11行改为
ArrayList<String> list= new ArrayList<String>();后将得到图2.说明在创建了一个默认大小的列表后,往里面添加数据时自动扩充了列表的大小,因为列表扩充时成倍扩充的原理,最后调用clear()和gc()后的结果内存要比图1中少(可能此时列表的SIZE要大于100W).
如果将代码中第32行中的list.clear();改为list=null; 将会得到以下结果:
图3
或将第32行删掉后也会得到上述结果.
说明赋值NULL后不仅列表中的对象变成了垃圾,为列表分配的空间也会回收,什么都不做与赋值NULL一样,说明直到程序结束也用不上列表list了,它自然就成为垃圾了.clear()只是清除了对象的引用,使那些对象成为垃圾.
相关文章推荐
- java 日期格式化
- Java集合---HashMap源码剖析
- Java:温度转换
- javabean
- spring定时任务总结
- 百分比转小数、计算百分比
- Java 重载与重写
- MyEclipse非常方便的快捷键
- java-jsp--mysql中文乱码
- Java类加载器
- 2016.7.29终于弄清楚的static关键字
- Java浅尝
- Java集合,文章收藏
- Java包装类
- 详解Javaweb中常见漏洞的防御二
- java 文件下载支持中文名称
- 解决: Eclipse 提示内存不足
- Java 分布式事务(多数据源)
- Java运行机制及JVM
- 防重复提交专题系列3-3:springmvc下的基于token的防重复提交