我正在开发一个实现 IDisposable 接口的项目。在这个项目中,我发现我对 GarbageCollector 的了解可以说是很差。所以我开始阅读一些文档,最后在 MSDN 上找到了“垃圾收集基础”一文。
您必须了解,在这一点上,我一直认为 GarbageCollector 是在下水道工作的人,负责清理来自该计划的废物。因此,我很惊讶地阅读了以下片段:
垃圾收集器被 CLR 初始化后,它会分配一段内存来存储和管理对象。
一段之后,该文件指出:
为了保留内存,垃圾收集器调用 Win32 VirtualAlloc 函数,并一次为托管应用程序保留一段内存。垃圾收集器还根据需要保留段,并通过调用 Win32 VirtualFree 函数将段释放回操作系统(在清除它们的任何对象之后)。
如果我理解正确,GarbageCollector 实际上是.NET 程序的MemoryManager !
我知道,它仍然会收集垃圾。但这不就像称歌手为麦克风支架一样吗?当然,这是真的,但这并不是你花钱去看他们的理由。GarbageCollector 显然不仅仅是废物处理,仅将其称为 GarbageCollector 似乎并不公平。
所以总而言之:
我理解正确吗?还是我走远了?
如果我理解正确:为什么.NET 开发人员称它为 GarbageCollector?