自动垃圾收集怎么知道我的内存还用不用? 被他删了,我又突然要用怎么办?他判断为垃圾的原则是什么?msdn中也没有说清楚啊
==CLR会检查每一个托管堆中的对象,在栈中是否还有指向它的引用,如果没有,则这个对象可以回收,只要栈中有一个指向此对象的引用,此对象就不能被回收

解决方案 »

  1.   

    这个问题其实是很有意思的,怎么样回收这些垃圾是某些公司的面试题现在流行的算法记得是"分代收集算法",楼主有兴趣可以google下
      

  2.   

    .net framework 有引用计数器,增加一个引用,引用计数起就加一,减少就减一.垃圾收集时就会处理引用计数器为0的变量
      

  3.   

    维护每一个对象的引用,发现如果没有引用了,就删除回收
    .Net内存管理和垃圾回收
    http://www.cppblog.com/mzty/archive/2006/04/30/6486.html.NET框架下的自动内存管理
    http://dev.21tx.com/2002/10/11/10058.html
    深入理解.NET内存回收机制
    http://www.yesky.com/20030311/1656401.shtml
      

  4.   


    new 产生的对象作用域是全局的呀!
      

  5.   

    c#垃圾收集器是一个按标记进行清除的垃圾收集系统,它工作时需要扫描C#对象的动态内存区,标记被引用的存储空间;当一个对象运行结束后,则自动地将标记清除。通过这种标记方法,当C#垃圾收集器扫描了所有可能被对象利用的空间后,那些没有被标记的对象(即没有被引用的)即作为垃圾被收集。------摘自《C#应用程序开发标准教程》希望对楼主有帮助。^0^
      

  6.   


    错, 当然不是全局, 在定义作用域之内.static才是全局