zoukankan      html  css  js  c++  java
  • .net List回收

    static void Main(string[] args)
    {
    List<int> list = new List<int>();
    for (int i = 0; i < 10; i++)
    {
    list.Add(i);
    }
    list.Clear();
    list.Add(0);
    list = null;
    list.Add(1);
    }

    一般看法:list=null;能更快的释放内存, 
    list.Clear();只是清空了内容 在内存上它还是占有空间,而=null 就是不占用内存空间

    大佬看法:=null还没有立刻把内存清掉,要调用GC.Collect();才会清掉内存, 
    Clear方法和=null差不多,也不会马上把内存清掉,直到GC.Collect()调用为止(如果你不调用的话系统会在适当的时机调用)。不过调用list.Clear();会减轻GC.Collect方法的负担,使其能更快完成清除内存的工作

    不用了,就设置为null,如果还要new一个使用,那不如Clear了继续用得好。因此单独比较内存释放是没有意义的,要看具体场合用具体的功能。 
    另外在局部变量时,离开作用域自动释放,相当于赋值null,因此一般很少有人会特意使用这个null的。

    所以如果元素很多,做法通常是这样的: 
    list.Clear(); 
    list=null; 
    GC.Collect(); 
    但GC.Collect();通常会消耗很多时间,所以如果数组元素不多的情况没必要直接调用GC.Collect,让系统在它感到不适的时候自动调用GC.Collect为好。

  • 相关阅读:
    itertools 迭代
    hmac 算法模块
    hashlib模块
    POJ1066线段交点
    POJ2653判断线段相交
    POJ1556 最短路 + 线段相交问题
    POJ1269求两个直线的关系平行,重合,相交
    计算几何小结1
    计算几何之叉积(外积)得应用
    差分约束系统——你能忍受得糖果数量
  • 原文地址:https://www.cnblogs.com/pangzili/p/9594555.html
Copyright © 2011-2022 走看看