416得票13回答
在C#中使用Finalize/Dispose方法

C# 2008 我已经在这个问题上工作了一段时间,但仍然对代码中finalize和dispose方法的使用感到困惑。我的问题如下: 我知道我们只需要在处理非托管资源时才需要finalizer。然而,如果有托管资源调用非托管资源,是否还需要实现一个finalizer呢? 如果我开发的类不使...

72得票3回答
这是内存泄漏吗?为什么java.lang.ref.Finalizer占用如此多的内存。

我在程序上运行了一个堆转储。当我在内存分析工具中打开它时,发现org.logicalcobwebs.proxool.ProxyStatement的java.lang.ref.Finalizer占用了大量内存。为什么会这样?

68得票15回答
“Dispose” 方法只适用于包含非托管资源的类型吗?

最近我和同事就实现Dispose和实现IDisposable接口的类型的价值进行了讨论。 我认为对于应该尽快清理的类型,即使没有未受控资源需要清理,实现IDisposable也是有价值的。 我的同事持不同意见。他认为如果没有未受控资源,实现IDisposable是不必要的,因为您的类型最终会被...

52得票8回答
如果构造函数抛出异常,析构函数会被调用吗?

寻找C#和C++的答案。(在C#中,用'finalizer'来替换'destructor')

51得票1回答
Python3变量名称的简单差异是否能改变代码运行方式?

这段代码...class Person: num_of_people = 0 def __init__(self, name): self.name = name Person.num_of_people += 1 def __del...

49得票5回答
静态终结器

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

46得票5回答
GC.Collect() and Finalize

好的,众所周知,当GC将对象标识为垃圾时,它会隐式调用对象的Finalize方法。但是如果我执行GC.Collect()会发生什么?最终器依然会被执行吗?有人问了我这个问题,我回答了“是的”,然后我想:“那是否完全正确呢?”

41得票4回答
析构函数和终结器有什么区别?

请注意:此问题涉及术语“析构函数”和“终结器”的差异及其正确用法。我仅提供了它们在C#和C ++ / CLI中使用的示例,以说明我提出问题的原因。我非常清楚它在C#和CLR中的实现方式,但我正在询问术语的正确用法。 在C#世界中,“析构函数”和“终结器”这两个术语似乎可以互换使用,我怀疑...

34得票5回答
如果我们没有析构函数,为什么应该调用SuppressFinalize?

我有几个问题,但是找不到合适的答案。 1)当我们没有析构函数时,为什么需要在Dispose函数中调用SuppressFinalize。 2)Dispose和finalize用于在对象被垃圾回收之前释放资源。无论是托管资源还是非托管资源,我们都需要释放它,那么为什么我们需要在dispose函...

31得票4回答
为什么结构体不能有析构函数?

有关面试中这样的问题,你认为最好的回答是什么? 我认为如果已经有类似的回答,请提供链接。