.NET 的 GC 是‘自动内存管理’,为什么还要关注对象生命周期?一个对象明明不再用了,但不被回收,可能卡在哪儿?

张开发
2026/5/3 18:53:55 15 分钟阅读
.NET 的 GC 是‘自动内存管理’,为什么还要关注对象生命周期?一个对象明明不再用了,但不被回收,可能卡在哪儿?
.NET 的 GC 是‘自动内存管理’为什么还要关注对象生命周期一个对象明明不再用了但不被回收可能卡在哪儿.NET 的 GC 确实自动回收堆内存但它只回收不可达对象而“不再用”不等于“不可达”——一个对象可能被静态字段、事件订阅比如你订阅了全局事件却忘了取消、缓存容器、线程本地存储甚至 async 方法闭包里隐式捕获的变量所持有形成意外的引用链更麻烦的是即使对象已真正不可达若它曾进入 Gen2 或大对象堆LOH也要等到 Full GC 才释放这在高吞吐服务中可能延迟数分钟所以“自动管理”不等于“不用管”而是要求我们理解 GC Roots 的构成与代际回收策略主动避免长生命周期对象意外持有短生命周期对象——本质上我们管的不是内存是引用关系的设计。#面试题 #dotNet面试题 #编程基础

更多文章