一、分析程序执行的内存情况
package main
import (
"os"
"runtime/pprof"
)
func main() {
// ... 你的程序逻辑 ...
// 将 HeapProfile 写入文件
f, err := os.Create("heap.prof")
if err != nil {
panic(err)
}
defer f.Close()
pprof.WriteHeapProfile(f)
}
然后执行:
# 解析 heap.prof 文件
go tool pprof -alloc_space heap.prof
# 在交互式界面中查看数据
(pprof) top
其他的选项还有:
-alloc_space:查看分配空间相关的信息
-inuse_space:查看当前内存使用情况
效果大概是这样的:
二、分析程序执行的CPU使用时间情况
import (
"os"
"runtime/pprof"
"log"
)
func main() {
// 创建文件用于保存 CPU profile
f, err := os.Create("cpu.prof")
if err != nil {
log.Fatal(err)
}
defer f.Close()
// 开始 CPU profiling
if err := pprof.StartCPUProfile(f); err != nil {
log.Fatal(err)
}
defer pprof.StopCPUProfile()
// 其他程序逻辑...
}
然后同理执行:
go tool pprof cpu.prof
# 在交互式界面中查看数据
(pprof) top
效果是这样的:
也是可以通过 top 和 list 某个函数步骤去查看具体信息