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

Swift中使用Thread即使对象已析构仍出现内存泄漏问题求助

问题根因

这是苹果Foundation框架中Thread类的已知系统级Bug,和你的业务代码实现无关。

验证依据
  • 你的代码逻辑完全符合内存管理规范:在deinitViewModel中先调用cancel()方法再将线程实例置空,TestThread的deinit方法正常触发,说明业务层所有强引用都已正确释放,不存在循环引用问题。
  • 该泄漏发生在底层内核关联逻辑:哪怕完全不启动创建好的Thread实例,Foundation底层创建的和线程绑定的内核态元数据对象,在Thread实例释放时没有被正确回收,该问题在多个iOS版本中都可复现,属于系统自身实现缺陷。
规避方案
  • 优先替换为苹果推荐的并发方案:使用DispatchQueue(GCD)或者OperationQueue实现并发逻辑,二者的内存管理经过长期验证,不存在该类泄漏问题。
  • 如果确实需要使用自定义Thread(如常驻线程场景),建议复用全局单例的Thread实例,避免反复创建销毁Thread对象产生累积泄漏。
  • 单次Thread实例泄漏的内存体量极小(仅几十字节),如果你的业务场景不会高频创建销毁Thread,几乎不会对App运行产生实际影响,可以忽略该泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:48:04