ArrayList是常用到的JCF類,用來保存類型相同的一組對象,並通過下標來快速訪問指定對象。今天討論的是當我們使用完ArrayList后應該選擇怎樣合適的處理方式。
這里現在有三種方式如下:
1. 使用ArrayList的對象方法clear()
ArrayList<String> list = new ArrayList<String>(); list.add("0"); list.add("1"); list.add("2"); list.clear();
ArrayList對象內部維護一個對象數組elementData, 當執行clear()方法時, 會執行循環將elementData中每一個坐標都設置為為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,相對來說可盡量避免堆內存溢出問題。