【发布时间】:2014-01-21 18:24:26
【问题描述】:
我在多次点击时拨打setABC(id)。
MyClass _globalObject;
setABC(id)
{
_globalObject = new MyClass(id);
}
垃圾收集器是从内存中销毁旧对象并将新对象分配给_globalObject,还是只是创建一个新对象并分配给_globalObject,每次调用 setABC(id) 时都会消耗内存;
(edit) 可能我表述的不好,我不关心GC什么时候发生,而是下面的代码会破坏内存中的旧对象并将新对象分配给_globalObject通过在多次调用中不消耗内存超过一次。
_globalObject = new MyClass(id);
【问题讨论】:
-
两种说法都是正确的。别担心了。
-
你的问题有点混乱。您是否想询问是否必须在每次分配给
_globalObject之前进行垃圾收集? -
实际上,它并没有按照您的要求工作。您每次都为新对象分配新引用。 GC 自行运行,而不是在您分配新对象时运行。你的旧类将被标记为收集,当 GC 运行时它将收集它
-
@HenkHolterman 建议的重复对 java 没有帮助,这里是 .Net。虽然我同意概念是一样的。
标签: c# garbage-collection