You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

以下C#代码是否会引发内存泄漏问题?

这段C#代码是否会造成内存泄漏?

结论:不会造成内存泄漏

你的理解存在误区,具体原因如下:

  • 当CreateMemoryLeak()方法执行结束后,通过new Foo()创建的Foo实例,没有被任何根引用(比如静态变量、当前活跃的局部变量、CPU寄存器中的引用等)持有。
  • 虽然Foo内部的Bar对象通过MyEventHandler事件持有了Foo的引用,形成了Foo → Bar → Foo的循环引用,但.NET的垃圾回收器(GC)是基于追踪式回收的,它能够识别这类循环引用:只要整个循环链中的所有对象都没有被根引用指向,整个链条都会被标记为可回收对象。
  • 这里的Bar是Foo的实例成员,它的生命周期完全绑定在Foo实例上。当Foo实例失去所有根引用后,Foo和Bar组成的循环引用链没有任何外部依赖,GC运行时会将它们一并回收,不会导致内存泄漏。

内容的提问来源于stack exchange,提问作者David Lefaivre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 06:38:14