<分区>
Possible Duplicates:
Is it possible to have a memory leak in managed code? (specifically C# 3.0)
Memory Leak in C#
昨天有一个类似的问题,但对于 Java,所以我很感兴趣 - 在 C#/.NET 中创建内存泄漏需要什么(不使用不安全)?
标签 c# .net memory-leaks
<分区>
Possible Duplicates:
Is it possible to have a memory leak in managed code? (specifically C# 3.0)
Memory Leak in C#
昨天有一个类似的问题,但对于 Java,所以我很感兴趣 - 在 C#/.NET 中创建内存泄漏需要什么(不使用不安全)?
最佳答案
静态事件;致命,因为它们永远不会超出范围。
static event EventHandler Evil;
for(int i = 0 ; i < 1000000 ; i++)
Evil += delegate {};
匿名方法在这里只是一个不错的选择,但很好,因为它们也是取消订阅的 pig ,除非您将副本复制到变量/字段并订阅那个.
技术上这实际上并不是“泄漏”,因为您仍然可以通过 Evil.GetInvocationList()
访问它们 - 但是,当与常规对象一起使用时,这可能会导致意外的对象生命周期,即
MyHeavyObject obj = ...
...
SomeType.SomeStaticEvent += obj.SomeMethod;
现在 obj
处的对象永远存在。这足以满足 感知到的泄漏 IMO,并且“我的应用死得很惨”对我来说已经足够了;p
关于c# - 如何在 C#/.NET 中创建内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6567916/