简介

Go pprof是官方工具,可以用来查找内存泄漏

安装方法:

1
go install github.com/google/pprof@latest

内存泄漏分析

在项目中穿插一点点代码

1
import _ "net/http/pprof"
1
2
3
go func() {
http.ListenAndServe(":6060", nil)
}()

重新编译启动后即可打开web界面查看各项数据(web界面略)

可以先记录下初始的内存情况:

1
curl -s http://ip:6060/debug/pprof/heap\?debug\=1 > base.heap

运行一段时间后,再次记录当前内存情况:

1
curl -s http://ip:6060/debug/pprof/heap\?debug\=1 > current.heap

此时可以拿两份文进行对比

1
go tool pprof --base base.heap current.heap

在里面输入:

1
top

即可查看内存差异,效果:

1
2
3
4
5
6
Type: inuse_space
Entering interactive mode (type "help" for commands, "o" for options)
(pprof) top
Showing nodes accounting for 42.08MB, 100% of 42.08MB total
flat flat% sum% cum cum%
42.08MB 100% 100% 42.08MB 100% <unknown>

也可通过web服务查看:

1
go tool pprof --http :9090 --base base.heap current.heap

画面略