问题标签 [suppressfinalize]
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# - 我什么时候应该使用 GC.SuppressFinalize()?
在 .NET 中,我应该在什么情况下使用GC.SuppressFinalize()
?
使用这种方法能给我带来什么好处?
c# - IDisposable GC.SuppressFinalize(this) 位置
我为我的代码使用默认的 IDisposable 实现模板(模式)。
片段:
我的问题:为什么在 Dispose 公共方法中调用“GC.SuppressFinalize(this)”?在处置托管资源后,我会将“GC.SuppressFinalize(this)”放在受保护方法的“if (isDisposing)”部分中。
像这样:
c# - 在 TimedLock 为什么需要 SuppressFinalize(tl.leakDetector) ?
http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking
为什么需要这条线?
System.GC.SuppressFinalize(tl.leakDetector);
我本以为终结器不应该被禁止运行向剩余监视器发出警报的代码。
显然,我只查看调试版本。
谢谢
c# - 当我们没有析构函数时为什么要调用 SuppressFinalize
我有几个问题我无法得到正确的答案。
1)当我们没有析构函数时,为什么要在 Dispose 函数中调用 SuppressFinalize 。
2) Dispose 和 finalize 用于在对象被垃圾回收之前释放资源。无论是托管资源还是非托管资源,我们都需要释放它,那么为什么我们需要在 dispose 函数中添加一个条件,当我们从 IDisposable:Dispose 调用这个被覆盖的函数时说 pass 'true' 并在从 finalize 调用时传递 false 。
请参阅我从网络复制的以下代码。
如果我删除布尔受保护的 Dispose 函数并实现如下。
c# - Dispose() 方法中 GC.SuppressFinalize(this) 的目的是什么?
我有以下代码:
尽管有一条评论解释了与 GC 相关的调用的目的,但我仍然不明白它为什么会在那里。
一旦所有实例不再存在,例如在using
块中使用时,对象是否注定要进行垃圾收集?
这将发挥重要作用的用例场景是什么?
.net - 我应该在 IDisposable AND Finalize 上实施 GC.SupressFinalize 吗?
我的新客户处的代码审查清单具有以下内容 -
实现 Dispose 和 Finalize 的类应该在 Dispose 实现中调用 GC.SupressFinalize
为什么?
它不应该读作实现 IDisposable 接口的类应该在 Dispose 实现中调用 GC.SupressFinalize 吗?
还是我错过了一些愚蠢的东西?
c# - C# 语言:垃圾回收、SuppressFinalize
我正在阅读“The C# Language”,第 4 版,它谈到了垃圾收集,如下所示:
“BILL WAGNER:以下规则是 C# 和其他托管环境之间的重要区别。
在应用程序终止之前,调用其所有尚未被垃圾回收的对象的析构函数,除非此类清理已被抑制(例如,通过调用库方法 GC.SuppressFinalize)。”
所以我在这里有几个问题:
Q1。为什么 .net 与其他托管环境不同(我想这是暗示 Java?)?有什么特别的设计问题吗?
Q2。
GC.SuppressFinalize
被调用的对象会发生什么?我知道这意味着GC不会调用这些对象的终结器(析构函数),如果是这样,这些对象什么时候会真正被销毁,以便将分配的内存位返回到堆中?否则会出现内存泄漏?
c# - ReRegisterForFinalize SuppressFinalize 现实生活中的例子
我刚刚在读这篇文章,“<a href="https://web.archive.org/web/20130418095110/http://msdn.microsoft.com/en-us/library/bb985010.aspx" rel=" nofollow">垃圾收集:Microsoft .NET Framework 中的自动内存管理”,作者 Jeffrey Richter,我想不出任何现实生活中使用ReRegisterForFinalize
或.NET 的示例SuppressFinalize
。
谁能给我一些例子?
c# - 哪个类在其构造函数中调用 SuppressFinalize 以使您的 dispose 调用无用?
有一些类,例如 DataTable,已经在其构造函数中调用了 SuppressFinalize,因此没有必要在其上调用 dispose/use。(因为 dispose 是为了提前释放,但没有什么可以释放)
那么,我想知道此类类的列表或通过反射找到此类类列表的方法?
c++-cli - 为什么在 C++ CLI 中手动调用析构函数(通过删除)后不应调用 Finalizer
在参考这篇讨论 C++ CLI 中析构函数和终结器的区别的文章后,我想知道为什么编译器会添加一些指令。抑制析构函数中的finalize?
剂量 finalize 函数不代表“最终,它将被 GC 调用”?
和
我们是否应该在析构函数和终结器中添加相同的“释放资源”代码?