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

相关推荐
计算机安禾6 小时前
【c++面向对象编程】第27篇:空类的大小为什么是1?——C++对象标识的秘密
开发语言·c++·算法
河阿里6 小时前
Python容器:特性、区别和使用场景
开发语言·python
奇树谦6 小时前
QListView和QListWidget区别详细说明
开发语言
爱好物理的一名程序员XiaoK6 小时前
搭建网站时遇到的只显示空白界面
java
郭龙_Jack6 小时前
Java并发包(JUC)深度解析:从LockSupport到云原生演进
开发语言·云原生·java并发编程
AC赳赳老秦6 小时前
OpenClaw与思维导图工具联动:自动生成工作规划脑图、拆解任务节点,适配职场管理
java·大数据·服务器·数据库·python·php·openclaw
Highcharts.js6 小时前
AI向量知识谱系图表创建示例代码|Highcharts网络图表(networkgraph)搭建案例
开发语言·前端·javascript·网络·信息可视化·编辑器·highcharts
周杰伦fans6 小时前
C# AutoCAD 二次开发极简入门:从环境搭建到高效实战
开发语言·c#
吴声子夜歌6 小时前
状态机——枚举实现简单状态机
java·枚举·状态机