一、分析程序执行的内存情况
package mainimport ("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 profilef, err := os.Create("cpu.prof")if err != nil {log.Fatal(err)}defer f.Close()// 开始 CPU profilingif err := pprof.StartCPUProfile(f); err != nil {log.Fatal(err)}defer pprof.StopCPUProfile()// 其他程序逻辑...
}
然后同理执行:
go tool pprof cpu.prof# 在交互式界面中查看数据
(pprof) top
效果是这样的:
也是可以通过 top 和 list 某个函数步骤去查看具体信息