list清空和赋值null对内存释放的区别

721 阅读1分钟
list.clear();  //GC 会回收空间和数据
list = null;   //GC 不会回收空间,只会回收数据

clear()内部实现

public void clear() { 
    modCount++;  

    // 遍历将集合元素赋值为null 
    for (int i = 0; i < size; i++)  
        elementData[i] = null;  

    size = 0;  
}

在元素很多时,这样可以减轻GC负担

ist.Clear();
list=null;
GC.Collect();

平时写代码是,尽量别乱用GC,GC很消耗时间。 很多时候我们不必考虑资源释放问题,Java的GC机制会处理好

例如,局部变量离开作用域自动释放,相当于赋值null。