2012-02-27 62 views
-5

可能重复:
difference between destructor and garbage collector垃圾收集和析构函数

最近我问这个question,现在按照我得出的结论的答案,那

好吧,让我们我检查是否得到了这个概念,GC是用来检查是否需要处理对象,如果有的话会调用析构函数,GC不能破坏它另一方面,析构函数会在类的末尾销毁对象,而析构函数不能检查内存问题,它最终会破坏所有的东西。我对吗?

我评论有,但没有得到答复,所以我想在这里发布新问题。任何人都可以回复,我的结论是正确的

+4

您已添加评论* 9分钟前*。请更耐心。 – 2012-02-27 10:38:17

回答

1

不,析构函数(〜myClass)只是在你不再需要对象时要做的事情,比如释放资源(文件,连接...)。 它与构造函数(myClass)相反,您在其中设置对象(获取连接等)。 当GC超出范围或析构函数被调用(我认为)时,GC删除所有指向myClass对象的指针。所以你的对象之前在内存中的位置可以再次分配。

+0

令人惊讶的是,GC不知道任何*关于大多数超出范围的物体*。相反,它的主要工作方式是将任何可以找到的引用存在的所有内容复制到新的内存区域,然后声明以前用于保存刚刚收集的代的对象的所有内存都可供重用。有一些像WeakReference,监视器锁定,固定对象,注册终结器等角落的情况,但大多数情况下,垃圾收集器既不知道也不关心有多少废弃对象存在。 – supercat 2012-03-02 00:00:22