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

C#中Lambda捕获场景下hugeString的垃圾回收问题及优化疑问

问题解答

1. TestClass实例化后,hugeString会被GC回收吗?

会的。核心原因是代码中的lambda表达式() => length捕获的是值类型变量length,而非hugeString本身:

  • length是hugeString.Length的拷贝(int是值类型),赋值完成后就和hugeString没有任何引用关联。
  • 构造函数执行完毕后,局部变量hugeString的作用域结束,没有任何存活的引用指向它,GC会将其标记为可回收对象。

2. 取消注释hugeString = null对垃圾回收有帮助吗?

完全没有帮助。

  • 局部变量在方法(构造函数)执行完成后,本身就会脱离作用域,CLR的垃圾回收器能自动识别该变量不再被引用,不需要手动置null。
  • 手动赋值null属于冗余操作,JIT编译器甚至可能直接优化掉这行代码,不会对GC的回收时机或效率产生任何影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:24:51