【问题标题】:Garbage Collector and destructor [duplicate]垃圾收集器和析构函数[重复]
【发布时间】:2012-03-16 20:09:44
【问题描述】:

可能重复:
difference between destructor and garbage collector

最近我问了这个question,现在根据答案我得出的结论是,

好吧,让我看看我是否明白了这个概念,GC只是用来检查是否需要对对象进行任何处理,如果需要,它会调用析构函数,GC不能自己销毁任何东西,而析构函数在另一方面,将在类结束时销毁对象,并且析构函数无法检查内存问题,它只会在最后销毁所有内容。我说的对吗?

我在那里发表了评论,但没有得到回复,所以我尝试在这里发布新问题。谁能回答,我的结论对吗

【问题讨论】:

  • 您在 9 分钟前添加了该评论。请耐心等待。

标签: c# garbage-collection destructor


【解决方案1】:

不,析构函数 (~myClass) 只是在不再需要某个对象时执行您希望他执行的操作,例如释放资源(文件、连接等)。 它与您设置对象(获取连接等)的构造函数(myClass)相反。 当 myClass-object 超出范围或调用析构函数(我认为)时,GC 会删除所有指向 myClass-object 的指针。所以你的对象之前在内存中的位置可以重新分配。

【讨论】:

  • 令人惊讶的是,GC 对超出范围的大多数对象一无所知。相反,它的主要工作原理是将它可以找到的任何类型的引用存在的所有内容复制到一个新的内存区域,然后声明以前用于保存一代对象的 all 内存收集后可重复使用。有一些极端情况,如弱引用、监视器锁、固定对象、注册终结器等,但大多数情况下,垃圾收集器既不知道也不关心存在多少废弃对象。
猜你喜欢
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 1970-01-01
相关资源
最近更新 更多