首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >谁给谁打电话?

谁给谁打电话?
EN

Stack Overflow用户
提问于 2014-01-17 06:32:17
回答 1查看 264关注 0票数 0

对于msdn上这两个看似矛盾的陈述,我感到很困惑。

1)当类包含析构函数时,将在Finalize队列中创建一个条目。当调用析构函数时,将调用垃圾回收器来处理队列。

2)程序员无法控制何时调用析构函数,因为这是由垃圾收集器确定的。垃圾收集器检查应用程序不再使用的对象。如果它认为一个对象符合销毁条件,它将调用析构函数(如果有的话)并回收用于存储该对象的内存。

在第一条语句中,我理解析构函数调用->垃圾回收器,而从第二条语句中,我理解垃圾回收器调用-->析构函数。

??

更新:此链接

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-17 06:36:48

首先,垃圾收集器确定对象有资格进行回收。

如果对象需要终结,那么它就被放置在终结队列中;由于队列是根,所以它现在再次处于活动状态。

然后终结器线程运行,将对象标记为不再需要终结,并运行终结器。

如果在终结器的末尾,对象仍然是死的,那么当GC稍后再次运行时,它会发现有一个不需要终结的死对象,并清理它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21179310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档