内存泄漏有哪些场景?

  • 长生命周期的对象持有短生命周期对象的引用: 例如全局变量引用到的对象
  • 未关闭的 Goroutine:Goroutine 启动后,如果由于某种原因(例如死锁、无限循环、channel 阻塞)而无法正常结束,就会一直占用内存。
  • time包使用不当
  • 字符串操作不当
  • 文件、网络连接等资源未关闭:
  • CGO 内存管理不当 :如果你的 Go 代码使用了 CGO,并且在 C 代码中分配了内存,那么你需要手动释放这些内存。 否则,会导致内存泄漏。