如果我创建了一个类,并且实例化,那么这个对象就会占用一定的堆内存。为了不造成内存泄漏,请问:
1.这个堆内存是在这个对象作用域结束被自动释放的吗?
2.这块内存是在应用程序结束被系统收回的吗?
3.这块内存是机器重启才能释放掉的吗?
还有几个问题:
栈区的内存是什么时候释放的,是谁负责释放的?
C#垃圾回收器是在什么时候进行垃圾回收的?
为什么我们有些时候要自己进行释放,比如在建立数据库连接的时候?
这些问题想的我脑袋都快炸了,现在自学到这儿就卡了,希望能帮帮我啊!!!

解决方案 »

  1.   

    在 release 编译运行后会看到
    一般 只要以后代码不再用到该对象 则 执行完最后一行使用该对象的代码后 回自动释放掉 
    有些对象要在多长时间没有被使用后释放掉
    主要就是这两种这是虚拟机控制的托管代码 跟 重启电脑没有多少关系  当然电脑重启后 啥都释放了
    一般就是你说的第一种情况
    有些特殊的对象 比如引用的 第三方DLL 还是要写析构函数的
      

  2.   

    不做解释
    自己去看
    《你必须知道的.net》
    《Clr via C#》
      

  3.   

    .NET的内存管理