【发布时间】:2015-03-22 16:27:19
【问题描述】:
我仍然对 C# 的垃圾收集器感到有些困惑。文档指出,当没有更多引用指向该对象时,该对象将被垃圾回收。
所以我的问题是,为什么这个对象没有立即被垃圾回收?没有提及它。让我们假设背景类本身也没有创建任何引用。
public void StartGame() {
// the background instance is created, but no reference is kept:
new Background("landscape.png", speed);
}
【问题讨论】:
-
when there are no more references...并不意味着只要没有更多的引用... -
当一个对象不再被引用时,它是有资格收集的。垃圾收集器仅在需要释放一些内存时运行,而不是在每次对象符合收集条件时立即运行。
-
所以我的背景可能随时随机消失,因为我没有参考?我问这个是因为我真的从未见过这种情况发生。
-
您的问题的答案完全取决于
Backgroundctor 的作用。 -
“让我们假设背景类本身也没有创建引用。” -- 那么实例是否被垃圾回收有什么区别呢?几乎你的代码有意义的唯一方法是它是否确实创建了对自身的引用。
标签: c# garbage-collection