ArrayList.clear=nullnew Arraylist之间的对比区别
Posted chenpt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArrayList.clear=nullnew Arraylist之间的对比区别相关的知识,希望对你有一定的参考价值。
1.使用ArrayList的对象方法clear()
1 List list = new ArrayList(); 2 List list1 = list; 3 list.add(1); 4 list.add(2); 5 list.add(3); 6 list.clear();
ArrayList对象内部维护一个对象数组elementData, 当执行clear()方法时, 会执行循环将elementData中每一个坐标都设置为为null, 并设置数组的size为0;我们还可以使用该list进行操作
clear源码如下
public void clear() { modCount++; // clear to let GC do its work for (int i = 0; i < size; i++) elementData[i] = null; size = 0; }
2. 使用=null
ArrayList<String> list = new ArrayList<String>(); list.add("0"); list.add("1"); list.add("2"); list = null;
直接将变量list指向null,通常当我们不需要再使用ArrayList对象时,可以将变量值设为null,以便GC可以运作并回收这部分内存空间。
需要注意的是当仍有其他变量指向该对象时,即使讲变量list置为null垃圾回收器也无法回收该内存空间。如下:
ArrayList<String> list = new ArrayList<String>(); ArrayList<String> arraylist = list; list.add("0"); list.add("1"); list.add("2"); list = null; // 此时list变量指向null,而arraylist变量仍然指向原内存空间,原内存空间得不到释放
3. 使用= new ArrayList()
方法3有点类似于方法1,都是得到一个空的ArrayList对象。不过new ArrayList()会得到一个初始化内部数组elementData容量为10的ArrayList对象,而方法1得到的对象的容量与原对象一致。值得注意的是使用方法3需要进行如在内存中重新开辟内存空间等操作,开销较大,如果只是单纯的想要使用空的ArrayList对象,建议使用方法1,相对来说可尽量避免堆内存溢出问题。
以上是关于ArrayList.clear=nullnew Arraylist之间的对比区别的主要内容,如果未能解决你的问题,请参考以下文章
JAVA这个能分页吗? List<HashMap<String, String>> list = new ArrayList<HashMap<String, Str