垃圾收集器如何知道对象和变量超出范围以便垃圾收集器可以收集它们?

最佳答案

简而言之:每个应用程序都有一组根。根标识存储位置,这些位置是指托管堆上的对象或设置为 null 的对象。

当垃圾收集器开始运行时,它假设堆中的所有对象都是垃圾。

垃圾收集器开始遍历根并构建从根可到达的所有对象的图。

删除所有无法访问的对象(释放内存)

这取自 http://msdn.microsoft.com/en-us/magazine/bb985010.aspx - 关于垃圾收集的好文章。对您来说“有趣”的部分是“垃圾收集算法”。这不是一个很长的部分

关于asp.net - .NET 中的垃圾收集器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10005651/

10-11 00:59