问题标签 [finalize]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - Dispose() 用于清理托管资源?
在这个答案中我发现,
当您的代码中使用了 Dispose/Finalize 模式时,清理 Finalize 方法中的非托管资源和 Dispose 方法中的托管资源。
后来我发现了这篇关于 finalize 和 dispose 的好文章,并对它们有了一个清晰的认识。文章有以下代码(第3页),用于解释概念:
但在此之下,出现了相同的注释(我包含在这个问题的开头)。
Dispose/Finalize 模式 Microsoft 建议您在使用非托管资源时同时实现 Dispose 和 Finalize。正确的顺序是开发人员调用 Dispose。当对象被垃圾回收时,即使开发人员忽略显式调用 Dispose 方法,Finalize 实现仍将运行并且资源仍将被释放。Francesco Balena 在他的博客中写道:“仅当您的类型调用分配非托管资源(包括非托管内存)的非托管代码并返回您最终必须使用以释放资源的句柄时,才应使用 Dispose/Finalize 模式。dispose 和 finalize 都必须在它们处理或完成自己的成员后,通过调用其父对象各自的方法链接到它们的父对象”。 简单地说,当您的代码中使用了 Dispose/Finalize 模式时,清理 Finalize 方法中的非托管资源和 Dispose 方法中的托管资源。
现在我又困惑了。在整篇文章和代码示例中,都表明应该在Dispose()
. 但是,那条评论的相关性是什么?
编辑:
经证实,这条线:
简而言之,当您的代码中使用了 Dispose/Finalize 模式时,清理 Finalize 方法中的非托管资源和 Dispose 方法中的托管资源
是错误的,我编辑了这个答案。
dispose - Dispose 或 Finalize 如何释放资源?
我有三个班。1 类、2 类和 3 类。我有循环依赖(class1 到 class2,class2 到 class3,class3 到 class1)。在这种情况下,如何通过 dispose 方法或 finalize() 释放资源?
c# - 在c#中,我们可以使用finalize来处理托管源吗?
根据如何使用 IDisposable 的模式,微软建议使用 finalize 来释放非托管源。 http://msdn.microsoft.com/en-us/library/system.idisposable%28v=VS.80%29.aspx
但是,如果我们在 finalize 中编写一些代码来发布托管源代码会发生什么?也就是说当 GC 调用 finalize 释放一些托管源时,会发生什么?
java - 为什么我可以访问另一个包的其他子类中的 finalize() 方法?
我是 Java 新手 第一次尝试学习 Java。我的简单问题是关于 java.lang.Object 中的 finalize () 方法。为什么我可以在我的其他类中访问这个唯一受保护的方法而不是其他受保护的方法。我的导师告诉我,受保护的只有它的类、同一个包和它的子类中的范围。在这里我读到了这个。
有人可以解释一下 finalize()method 是否有任何特殊情况。我有一个不满意的答案,为什么 finalize ()在这里受到保护 我的代码如下:
只有在 finalize () 的情况下才会被调用,而不是在另一种情况下。问我的导师他拒绝回答他说你做错了我会看但他没有回复我。
请想想我很喜欢 java 。也许我犯了一些大错误。
java - 为什么我不能从 ReferenceQueue 中获取可终结对象的 PhantomReference?
这是我的代码
很奇怪,rq.remove() 会永远被阻塞。为什么我的可终结对象的幻像引用不能放入引用队列?被GC收集了吗?
java - 如果 Java 的 finalize 方法出现死循环或死锁,Finalizer 线程会怎么做
如果Java finalize 方法中存在无限循环或死锁,Finalizer 线程会做什么。
mongodb - MongoDB Map Reduce - 完成以跳过一些结果
我有一个适用于集合的 map reduce 函数,如下所示:
我想要做的是 Finalize 只会返回通过某个阈值(例如 count>10)的对象。目前它仍在返回对象,计数为空。
有任何想法吗?
c# - C# override in Finalize()
I m getting this Error Message:
Error 1 Do not override object.Finalize. Instead, provide a destructor.
by the way, this is Original Code complied by third party company.
how to solve this problem? how to Finalize with override?
java - Object.finalize() 方法忽略抛出的异常
直接来自这个API:
如果 finalize 方法抛出未捕获的异常,则忽略该异常并终止该对象的终结。
在将它覆盖后,我尝试显式调用 finalize(),如下所示:
当我明确地调用它时,虽然我确实得到了异常,但另一方面,如果我隐含地让它去,它会很好地忽略预期的异常:
为什么会这样?为什么在第一种方式中使用System.gc()
API 得到尊重,而在显式调用时却没有?
android - Android finalize() 和 System.exit()|System.gc()
我有一个关于垃圾收集器和 Object.finalize() 的问题。我创建了一个实现 finalize 方法的类。如果我在 DDMS 中运行我的应用程序并强制 GC,则对我的类的对象调用 finalize,而没有留下任何引用。但是,如果我在我的应用程序中调用 System.gc(),则不会调用 finalize。离开应用程序时调用 System.exit(0) 也不会导致 finalize。为什么不调用finalize?