.net - 这会导致内存泄漏(在 .NET 中)吗?

标签 .net memory-management

我有一个内存泄漏问题。在 TopClass 的类实例超出范围之前,obj 的实例是否有资格进行垃圾回收?

public class TopClass
{
  public void MyFunction()
  {
    TestClass obj = new TestClass();
    obj.PropertyChanged += (s,e) => { //Do some code };
    obj = null;
  }
}

此外,这会使所有实例化 TopClass 并调用 MyFunction() 的对象不符合 GC 的条件,对吧?

我知道在托管代码中,一旦应用程序超出范围,所有对象都符合条件,但我想知道当我的应用程序正在运行时,这会导致内存泄漏。对吧?

最佳答案

没有。 obj 将被收集。此代码中没有任何内容会导致强引用。

对象可以通过附加为事件处理程序来保持事件状态,但对象不能通过具有事件处理程序来保持事件状态。

关于.net - 这会导致内存泄漏(在 .NET 中)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315464/

相关文章:

c# - Google 存储客户端的刷新 token

.net - 为什么我的 web 项目找不到我的 elmah.axd 文件

c# - 为什么 Lazy<T> 在序列化期间强制初始化?

c# - 调试远程进程

c - 堆管理器的空闲列表存储在进程的地址空间中的什么位置?

c++ - C++中的内存泄漏

.net - 在VS中快速创建依赖项属性

linux - 强制 MongoDB 预取内存

linux - 我可以使用 malloc 在 mmap 文件上分配内存吗

android - 如何降低我的应用程序的内存使用量?