面试题:Gorutine泄露的条件有哪些?

一、Goroutine 泄露的核心条件(必背)

Goroutine 泄露 = 启动后永远无法退出、无法被 GC 回收 满足以下任意一条就会泄露:

  1. Goroutine 内部发生永久阻塞,无法被唤醒
  2. Goroutine 陷入死循环,没有任何退出条件

二、最常考的 4 大泄露场景(99% 面试问这些)

1. Channel 阻塞(最常考)

  • 无缓冲 channel 发送 / 接收,没人配对
  • 有缓冲 channel 满了还发、空了还收
  • channel 永远不关闭,导致一直阻塞

2. 锁永久拿不到

  • sync.Mutex 被持有且永不释放
  • 其他 goroutine 一直阻塞在 Lock ()

3. WaitGroup 误用

  • Add (1) 但忘记 Done ()
  • Wait () 永远等不到计数器归零

4. 死循环 + 无退出条件

  • 无限 for 循环
  • 没有 ctx.Done ()、没有 break、没有关闭信号

三、一句话总结(面试收尾金句)

Goroutine 泄露的本质:启动后无法执行到 return,永久阻塞或永久死循环。

相关推荐
泡海椒14 分钟前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
Beyond_System|系统之外1 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
景熙55231 小时前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
wno7042 小时前
Spring Security权限控制
java·python·spring
杨运交2 小时前
[071][验证码模块]基于Spring拦截器的验证码认证设计思想
java·后端·spring
Geek-Chow3 小时前
CountDownLatch in Java
java
SL_staff3 小时前
从RBAC到场景化授权:《无忧·企业文档》三级权限模型的技术实践解析
java·开源·产品
传奇开心果编程4 小时前
【springboot基础语法学与练】第 1 课:从零开始
java·spring boot·后端·学习
SL_staff4 小时前
财务系统慎用低代码?从数据模型闭环看合规落地的技术实践
java·低代码·全栈
Bruce_Liuxiaowei4 小时前
Python 实例赋值遮蔽类属性:一个从不报错的静默陷阱
开发语言·python·语法糖