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

相关推荐
像我这样帅的人丶你还12 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩12 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
tntxia12 小时前
Mybatis的日志输入
java
亦暖筑序14 小时前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式
用户2986985301417 小时前
Java 实现 Word 文档加密与权限解除
java·后端
Yeats_Liao18 小时前
14:Servlet中的页面跳转-Java Web
java·后端·架构
未秃头的程序猿18 小时前
告别"if-else地狱"!Java 21模式匹配,代码优雅了10倍
java·后端·面试
鹤望兰67518 小时前
字节跳动国际支付-后端开发-三面面经
java
Flittly18 小时前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
RainCity18 小时前
Java Swing 自定义组件库分享(十二)
java·笔记·后端