首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >垃圾收集器-终结

垃圾收集器-终结
EN

Stack Overflow用户
提问于 2014-01-12 23:13:08
回答 1查看 193关注 0票数 2

在MSDN中:“当一个对象不可到达时,垃圾回收器会考虑对象垃圾。然后,当垃圾收集器将一个对象的条目从终结队列移动到可自由队列时,该对象不再被视为垃圾,其内存也不会被回收。此时,垃圾收集器已经完成了对垃圾的标识。一些被标识为垃圾的对象已被重新归类为非垃圾。垃圾收集器压缩可重声明内存,特殊运行时线程清空可自由队列,执行每个对象的finished方法。需要两个GC才能收回需要终结的对象所使用的内存。

我的问题-,因为两个GC需要为需要完成的对象回收内存,如果在第二次收集之前,需要终结的对象再次被强烈引用,垃圾收集器是否从f可访问队列中删除对象,从而使其不被垃圾收集?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-12 23:14:03

垃圾收集器是否将对象从f可访问队列中移除,从而使其不被垃圾收集?

是。

在第二次运行时,它将始终从fRreachable中删除,但是当有一个新的外部引用时,它将不会被收集。您需要使用GC.ReRegister()方法来重新完成它。

这整个模式被称为resurrection,并且是very rarely called for

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

https://stackoverflow.com/questions/21081537

复制
相关文章

相似问题

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