【发布时间】:2010-04-08 11:32:10
【问题描述】:
我已经阅读了一些关于 .NET 垃圾收集器的文档,但我仍然有一些疑问(C# 中的示例):
1) GC.Collect() 是调用部分集合还是完整集合? 2) 部分收集是否会阻止“受害者”应用程序的执行?如果是的话..那么我想这是一件非常“轻松”的事情,因为我正在运行一个使用 2-3GB 内存的游戏服务器,并且我“从不”执行停止(或者我看不到它们.. )。 3)我读过关于 GC 根的信息,但仍然无法理解它们是如何工作的。假设这是代码(C#):
我的班级1:
[...]
public List<MyClass2> classList = new List<MyClass2>();
[...]
主要:
main()
{
MyClass1 a = new MyClass1();
MyClass2 b = new MyClass2();
a.classList.Add(b);
b = null;
DoSomeLongWork();
}
b 是否有资格被垃圾收集(在 DoSomeLongWork 完成之前)? classList 包含的对 b 的引用,可以认为是根吗? 或者根只是对实例的第一个引用? (我的意思是,b 是根引用,因为实例化发生在那里)。
【问题讨论】:
标签: c# garbage-collection