1
5
不,因为当您取消激活一个事件时,连接到该事件的委托(它是一个对象)不再是根,并且当GC认为合适时将被收集。当然,这是假设事件委托没有附加到多个处理程序,在这种情况下,只有从所有事件中取消对它的访问,才会收集它。 |
2
7
第一个问题的答案是“不”。往前走,这里没什么可看的。 可以 导致对象在内存中保留的时间比预期的长,因为这种可达性对于用户(开发人员)来说是透明的,因为委托的构造方式是这样的。 换句话说,假设我有两个对象:生产者和消费者。生产者触发消费者…消费的事件。
在本例中,任何
|
3
2
不知情的 可能会导致内存泄漏,答案是,如果保存事件委托的对象的实际生存期比委托引用的对象的有效生存期长得多,则会导致内存泄漏。例如,如果集合的枚举器钩住了CollectionChanged事件,并且有人要获取枚举器而从不处理它们,那么每次枚举集合(而不处理枚举器)时,都会创建一个新的枚举器对象,该对象将与基础集合一样长时间地保留在内存中。 |
4
2
这不是内存泄漏,它只是没有将任何处理程序挂接到该事件,如果它们没有连接、自动或其他方式。所以这件事不会对任何人开火,会被清理干净,生活还会继续。 How do events cause memory leaks in C# and how do Weak References help mitigate that? |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |