1
3
首先,在C#中,不能“忘记”在派生类中调用基类终结器,因为没有语法来重写基类终结器-它将始终被调用(类似于构造函数)。
事实上,一个人可以超越
关于最后确定订单的后半部分: 我不知道Java终结是如何或者是否保证对象以一致的顺序终结的,所以在所有终结器完成之前,所有引用都是有效的。。。 在.Net/C#终结器顺序未定义-这意味着在确定需要终结的对象(由于缺少外部引用)之后,该集合中的对象将在没有任何特定顺序的情况下被调用。因此,如果集合中的对象彼此引用,而不是调用最后一个对象的终结器时,所有其他对象都已终结。 |
2
1
我觉得没那么简单。我认为您可以引用.net和java中的其他对象,而其他对象处于不可预测状态也存在同样的问题。人们需要研究两者的内部工作机制才能完全理解它们,但我对java的了解并不深入,我只认为它们非常相似。顺便说一句,这个终结守护者在我看来很可疑。 |
3
1
您没有显示终结器守护程序的代码,但我建议您应该避免让可终结对象保留对原始对象的引用。相反,原始文件中需要清理的那些方面应该封装在可终结对象中(可能使用
|
codeforester · 测量GC暂停时间的最佳方法是什么? 6 年前 |
Venki WAR · 需要解释G1的并行完整GC 6 年前 |
Stephan_Berlin · 为什么CMS系列中的初始标记阶段 6 年前 |
Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 6 年前 |
goks · 如何清除熊猫的数据帧内存? 6 年前 |