一、引入依赖
"runtime/pprof"
"github.com/labstack/echo/v4"
二、在main方法中,新启一个协程,启动http接口
go func() {
e := echo.New()
e.POST("/api/mem", func(c echo.Context) error {
log.Info("start export mem")
f, err := os.Create("mem.prof")
if err != nil {
log.Errorf("could not create memory profile: ", err)
return err
}
defer f.Close()
if err := pprof.WriteHeapProfile(f); err != nil {
log.Errorf("could not write memory profile: ", err)
}
log.Info("generate mem.prof suncces")
return c.JSON(200, struct {
OK bool
}{OK: true})
})
err = e.Start(":9889")
}()
三、调用接口,生成prof文件后,下载到本地,然后本地启动http页面,观察内存分布
go tool pprof -http=:9090 ./mem.prof