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

线程池线程执行实例成员方法时,无其他引用的实例会被GC回收吗?

线程池执行实例方法时的实例生命周期问题

实例不会被GC回收,会被线程池线程保持存活直到方法执行完毕

当你把实例成员方法传给ThreadPool.QueueUserWorkItem时,本质是创建了一个委托对象,这个委托会自动持有对该实例的强引用。只要这个委托还在线程池的工作队列中等待执行,或者正在执行(包括休眠的那一小时),这个强引用就会阻止GC回收该实例。

哪怕你释放了所有其他指向该实例的引用,线程池里的委托仍然攥着这个实例的引用。只有当实例方法完全执行完毕(休眠结束、后续逻辑跑完),委托对象本身也被回收后,实例才会失去所有强引用,这时GC才可能回收它。

不存在“GC先回收实例,线程醒来后尝试执行”的情况——GC的回收规则是只处理没有任何强引用的对象,只要线程池还在处理这个方法,实例就有有效引用,根本不会被标记为可回收。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:05:54