[英]Why Is Object Still In Memory Snapshot After Destructor Called
谁能解释为什么。 . . 析构函数称为 object 计数和大小在 memory 快照中不会改变
.NET 没有析构函数。 它具有仅与 memory 管理间接相关的终结器。 一个带有终结器的 object 在终结器运行(或调用GC.SupressFinalize )之前不能被垃圾收集。 但是 object 在其终结器运行后不会立即进行垃圾收集。
当 GC 发现带有终结器的(否则)无法到达的 object 时,将对 object 的引用放在可访问队列中,并且终结器线程对最终到达那里的所有对象运行终结器。 object 将有资格在其终结器运行后的下一次 GC 运行中进行垃圾收集。 请注意,由于 object 已经在 GC 中幸存下来,因此至少在 Gen1 上。 如果它在 Gen2 上,它可能需要一段时间才能被收集起来。
为 C# 终结器重用 C++ 析构函数语法的决定可能是一个错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.