← AI 百科

Memory Leak内存泄漏

报错库 ·
一句话:程序运行时间越长占用内存越高,最后变慢、崩溃或被服务器杀掉。

它是什么

内存泄漏是程序申请了内存但没有正确释放,导致内存持续增长。在前端、Node.js、Python服务、队列任务和长连接服务中都可能出现。

适合干什么

  • 线上服务运行一段时间后变慢的人
  • Node.js、Python或前端开发者
  • 遇到容器OOM或服务器内存飙升的人
  • 正在做后台任务和长连接的人

不适合干什么

  • 一次性脚本执行完就退出的小任务
  • 只是短时间内正常峰值内存升高
  • 没有监控数据无法判断趋势的情况

普通人怎么用

  • 观察内存是否持续上涨不回落
  • 检查最近新增的缓存、定时器、监听器和全局变量
  • 重启服务验证是否短暂恢复
  • 用日志定位哪个接口或任务触发
  • 减少不必要的对象持有

进阶用户怎么用

  • 使用内存快照对比对象增长
  • 检查事件监听器是否重复注册
  • 限制缓存大小和过期时间
  • 把大文件处理改成流式处理
  • 为队列任务设置并发和超时

常见误区

  • 把所有内存上涨都当成泄漏
  • 只靠重启掩盖问题
  • 无限制缓存数据
  • 定时任务里不断创建连接但不关闭

和相似工具的区别

  • 内存泄漏 vs 内存峰值:内存峰值可能会回落,内存泄漏通常会持续增长并不释放。
  • 内存泄漏 vs OOM:内存泄漏是原因之一,OOM是内存耗尽后的结果。

入门步骤

  • 确认内存增长曲线
  • 找出触发场景
  • 检查缓存、监听器、连接、定时器
  • 做压力测试复现
  • 上线修复并继续观察

推荐工具(第三方)

Chrome DevTools、Node.js Inspector、Sentry、Grafana、Datadog