我正在开发一个实现IDisposable接口的项目。在这个项目中,我发现自己对垃圾回收器的了解可以被描述为非常少。因此,我开始阅读一些文档,最终在MSDN上找到了《垃圾回收基础知识》文章。
你必须明白,此时我一直认为垃圾回收器是在处理程序产生的废物的下水道工人。因此,我很惊讶地读到以下片段:
“在CLR初始化垃圾回收器之后,它分配了一个内存段来存储和管理对象。”
文章的下一段中,指出:
“为了保留内存,垃圾回收器调用Win32 VirtualAlloc函数,并为托管应用程序一次性保留一个内存段。垃圾回收器还根据需要保留段,并通过调用Win32 VirtualFree函数(在清除其中任何对象后)将段释放回操作系统。”
如果我理解正确的话,GarbageCollector实际上是.NET程序的MemoryManager!
我知道,它仍然会收集垃圾。但这不就像把歌手称为麦克风持有者吗?当然,这是真的,但你不会为此花钱去看他们演出。GarbageCollector显然做了更多事情,它几乎不公平地被称为垃圾收集器。
所以总之:
我理解得对吗?还是我完全错了?
如果我理解正确的话:为什么.NET开发人员称其为GarbageCollector?
你必须明白,此时我一直认为垃圾回收器是在处理程序产生的废物的下水道工人。因此,我很惊讶地读到以下片段:
“在CLR初始化垃圾回收器之后,它分配了一个内存段来存储和管理对象。”
文章的下一段中,指出:
“为了保留内存,垃圾回收器调用Win32 VirtualAlloc函数,并为托管应用程序一次性保留一个内存段。垃圾回收器还根据需要保留段,并通过调用Win32 VirtualFree函数(在清除其中任何对象后)将段释放回操作系统。”
如果我理解正确的话,GarbageCollector实际上是.NET程序的MemoryManager!
我知道,它仍然会收集垃圾。但这不就像把歌手称为麦克风持有者吗?当然,这是真的,但你不会为此花钱去看他们演出。GarbageCollector显然做了更多事情,它几乎不公平地被称为垃圾收集器。
所以总之:
我理解得对吗?还是我完全错了?
如果我理解正确的话:为什么.NET开发人员称其为GarbageCollector?