您的位置:首页 > 编程语言 > Java开发

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()只是清除了对象的引用,使那些对象成为垃圾.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: