Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 析构函数会影响性能吗?_C#_Performance_Memory Management_Garbage Collection_Destructor - Fatal编程技术网

C# 析构函数会影响性能吗?

C# 析构函数会影响性能吗?,c#,performance,memory-management,garbage-collection,destructor,C#,Performance,Memory Management,Garbage Collection,Destructor,我在我的一个基类中添加了一个析构函数,用于帮助查找内存泄漏,如下所示: #if DEBUG ~BaseViewModel() { Debug.WriteLine("View Model Disposed"); } #endif 甚至删除Debug.WriteLine代码 存在析构函数会影响调试生成的性能吗 不应使用空终结器。当类包含 finalizer,在Finalize队列中创建一个条目。当 调用终结器时,将调用垃圾收集器来处理 队列空的终结器只会导致不必要的性能损失 仅当类中有非托

我在我的一个基类中添加了一个析构函数,用于帮助查找内存泄漏,如下所示:

#if DEBUG
~BaseViewModel()
{
    Debug.WriteLine("View Model Disposed");
}
#endif
甚至删除Debug.WriteLine代码

存在析构函数会影响调试生成的性能吗

不应使用空终结器。当类包含 finalizer,在Finalize队列中创建一个条目。当 调用终结器时,将调用垃圾收集器来处理 队列空的终结器只会导致不必要的性能损失

仅当类中有非托管资源时,才需要析构函数终结器。如果添加析构函数,则应在Dispose中禁止终结。否则将导致对象在内存中驻留的时间更长,因为它们将被添加到终结器队列。注:

不应使用空终结器。当类包含 finalizer,在Finalize队列中创建一个条目。当 调用终结器时,将调用垃圾收集器来处理 队列空的终结器只会导致不必要的性能损失


仅当类中有非托管资源时,才需要析构函数终结器。如果添加析构函数,则应在Dispose中禁止终结。否则将导致对象在内存中驻留的时间更长,因为它们将被添加到终结器队列。注:

拥有一个将使您的对象活得更长,因为它将被添加到GC的终结器队列中。如果不需要,不要添加。你不需要它。。。您删除的任何内容都会以某种方式提高性能,但这是您可以测试的。如果不使用非托管资源,通常您不需要它。首先,对于性能检查,您需要自己进行测试,这是唯一的方法。第二,这看起来是一种发现内存泄漏的可怕方法。学会使用探查器,这样你就不必像这样进行测试。你还需要弄清楚你的术语。析构函数和disposition不是同一个概念。拥有一个析构函数和disposition将使对象保持更长的生存时间,因为它将被添加到GC的终结器队列中。如果不需要,不要添加。你不需要它。。。您删除的任何内容都会以某种方式提高性能,但这是您可以测试的。如果不使用非托管资源,通常您不需要它。首先,对于性能检查,您需要自己进行测试,这是唯一的方法。第二,这看起来是一种发现内存泄漏的可怕方法。学会使用探查器,这样你就不必像这样进行测试。你还需要弄清楚你的术语。析构函数和处置的概念不同。