8得票2回答
在终结器中释放MemoryCache会抛出AccessViolationException异常。

编辑 请参见问题底部的编辑说明以获取其他细节。 原始问题 我有一个CacheWrapper类,它在内部创建并持有.NET MemoryCache类的实例。 MemoryCache将自己挂钩到AppDomain事件中,因此除非显式处理,否则永远不会被垃圾回收。您可以使用以下代码进行验证: ...

22得票5回答
在 finalize 方法中引用对象

如果在finalize调用期间保存当前对象的引用会发生什么?例如:class foo { ... public void finalize() { bar.REFERENCE = this; } } 这个对象是否被垃圾回收了?当您稍后尝试访问bar.RE...

49得票5回答
静态终结器

如何进行静态终结? 并没有静态析构函数。在默认域中不会引发 AppDomain.DomainUnload 事件。由于AppDomain.ProcessExit 事件将总时间(默认设置为三秒)在所有事件处理程序之间共享,因此它实际上无法使用。

15得票7回答
Python中的__del__()方法有什么用?

来自Python文档: 不能保证在解释器退出时仍然存在的对象会调用__del__()方法。 据我所知,也没有办法保证一个对象在解释器退出前停止存在,因为由垃圾回收器决定对象删除的时间和方式。 那么,这个方法有什么意义呢?你可以在其中编写清理代码,但无法保证它会被执行。 虽然可以...

7得票1回答
Python中正确的终止方式

我有一堆实例,每个实例都有一个唯一的临时文件用于存储从内存中保存数据以便以后检索。 我希望确保在一天结束时,所有这些文件都被删除。然而,我想留出空间进行精细的控制其删除。也就是说,如果需要,可以提前删除一些文件(例如,它们太大并且不再重要)。 最佳/推荐的方法是什么? 我的想法 ...

8得票1回答
Xamarin Android:当离开当前Activity转到另一个Activity时,Finalizer没有被调用

在离开活动后,Finalizer 永远不会被调用。这是否意味着即使我转到下一个活动,该活动仍然存在? namespace XamarinTest { [Activity(Label = "XamarinTest", Icon = "@drawable/icon")] public class...

8得票1回答
AppDomain.Unload在Finalizer中抛出异常?

以下是目前的情况,我有一个使用AppDomain执行某些任务的工作程序。该域的设置和拆除非常昂贵。因此,我为每个线程创建了一个弱引用对象的缓存来维护工作程序,就像这样: class Worker { [ThreadStatic] static Dictionary<st...

7得票2回答
最终版本占用了很多内存,4GB中有2.5GB被占用。

我阅读了许多关于finalizer工作原理的文章,这是我的理解:如果一个类实现了finalize方法,则JVM会在该对象上创建Finalizer实例作为看门狗。 当GC运行时,它会标记要处理的对象并将它们添加到引用队列中,然后finalizer线程将从队列中选择这些对象并执行它们的final...

16得票3回答
C#中关于Dispose()和析构函数的两个问题

我有一个关于如何使用Dispose()和析构函数的问题。阅读了一些文章和MSDN文档,这似乎是实现Dispose()和析构函数的推荐方式。 但是,我有两个关于这种实现方式的问题,可以在下面阅读到:class Testing : IDisposable { bool _disposed ...

7得票1回答
我该如何编写正确的析构函数和终结器?

我正在尝试找出如何在C++/CLI中正确清理我的对象。 我已经阅读或浏览了这两篇文章(one, two),并查看了标准,还看了一些其他问题,特别是this one。 我有各种信息: 最终器应清理非托管资源(因此在对象进行垃圾回收时,所有内容都会被清理)。 析构函数应清理托管资源(删除 ...