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

相关推荐
枫叶丹41 分钟前
语音 AI 怎样边听边答:实时对话系统的工作原理
开发语言·人工智能·chatgpt·开源·php·agent·codex
阿狗童鞋6 分钟前
高并发系统设计实战指南
java·spring boot·spring cloud
xie0510_9 分钟前
Any类简要实现
开发语言·c++·算法
Sam_Deep_Thinking11 分钟前
CountDownLatch实现原理
java·后端·面试·程序员
小狼Solar13 分钟前
SAP MDG 功能范围说明(基于S/4HANA 2025)
java·开发语言
kimnoic13 分钟前
Python常用标准库模块及查询使用方法
开发语言·python
范中勤14 分钟前
Python 与 Java:模块、包、对象、反射核心差异总结
java·python·面试·反射·元类
ab12376816 分钟前
Spring Integration 完整笔记 + 和 spring-integration-mqtt、Paho、EMQX 的关系
java·笔记·spring
小蜗牛狂飙记22 分钟前
java环境一键配置和切换的ui工具
java
逆光的July25 分钟前
可靠消息投递与消费的工程设计:Outbox、幂等、死信兜底
java