面试题: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,永久阻塞或永久死循环。

相关推荐
人邮异步社区1 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大2 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai2 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说2 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
এ慕ོ冬℘゜2 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa2 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio
一次旅行2 小时前
Python+大模型端到端自动化日报系统
开发语言·python·自动化
Zane19943 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
噢,我明白了4 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
吠品4 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库