1. 程式人生 > >ArrayList 呼叫clear()後記憶體地址空間釋放問題

ArrayList 呼叫clear()後記憶體地址空間釋放問題

之前想清空集合的元素,直接呼叫api clear()函式,突然想如果clear後只是把元素刪除了,而沒有釋放記憶體地址空間,因為ArrayList是動態的分配記憶體,以後越來越多,會不會導致記憶體溢位。檢視clear()函式原始碼:

 /**
     * Removes all of the elements from this list.  The list will
     * be empty after this call returns.
     */
    public void clear() {
        modCount++;

        // clear to let GC do its work
        for (int i = 0; i < size; i++)
            elementData[i] = null;

        size = 0;
    }
可以看到,把集合中元素賦值為null,gcc會對其記憶體進行回收。