我遇到了一个面试问题,我不知道答案(小帮助:))
它说的有点类似:
它说的有点类似:
Class SomeClass : Idisposable { public void dispose() { while(true) { } } ~SomeClass() { dispose(); } }
1)在下一个GC之后不再引用时,对象是否已完成?我的答案是否定的,因为终结线程将停留在无限循环上.
2)在dispose中可以做什么来结束最终化以及在对象被处置之前循环继续多少次(没有考虑它将在下一代中花费的时间)
我不是特别清楚确切的问题(2).我有点没时间了……
不知道答案我把一个静态计数器变为3并且调用break并声明3
技术上会工作:),但这不是答案
我猜它与GC.SupressFinalize()有关吗?
也许在进入循环之前调用GC.SupressFinalize()?
任何想法,如果不是对不明确的问题的答案,更多的是他们可能的目标是什么?
解决方法
发生的事情相当无关紧要. CLR将终止程序,终结器上有2秒超时.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。