optimize: interface-held closure functions (#70)
English | 中文
Goref 是一个基于 Delve 的 Go 堆对象引用分析工具。
它可以显示 Go 内存引用的空间和对象数量分布,有助于高效地定位内存泄漏问题或查看持久化的堆对象以优化 GC 开销。
$ go install github.com/cloudwego/goref/cmd/grf@latest
Attach 到一个运行中的进程,然后使用 go pprof 工具打开输出文件。
$ grf attach ${PID} successfully output to `grf.out` $ go tool pprof -http=:5079 ./grf.out
请务必知悉 grf attach 会暂停程序直至命令退出。
grf attach
打开的 HTML 页面会显示堆内存的引用分布。你可以选择查看 “inuse space” 或 “inuse objects”。
例如,从一个 测试程序 中采集的堆内存引用分布如下所示,它反映了对象创建的调用栈分布。
使用 goref 工具,你可以看到 GC 可达的堆对象的内存引用分布,从而快速定位持有引用的实际代码位置。
它还支持分析 core 文件,例如:
$ grf core ${execfile} ${corefile} successfully output to `grf.out`
实现原理 | 高级用法
感谢 Delve 提供的优秀 go 调试器。
Goref
English | 中文
Goref 是一个基于 Delve 的 Go 堆对象引用分析工具。
它可以显示 Go 内存引用的空间和对象数量分布,有助于高效地定位内存泄漏问题或查看持久化的堆对象以优化 GC 开销。
安装
使用方式
Attach 到一个运行中的进程,然后使用 go pprof 工具打开输出文件。
打开的 HTML 页面会显示堆内存的引用分布。你可以选择查看 “inuse space” 或 “inuse objects”。
例如,从一个 测试程序 中采集的堆内存引用分布如下所示,它反映了对象创建的调用栈分布。
使用 goref 工具,你可以看到 GC 可达的堆对象的内存引用分布,从而快速定位持有引用的实际代码位置。
它还支持分析 core 文件,例如:
Go 版本约束
文档
实现原理 | 高级用法
鸣谢
感谢 Delve 提供的优秀 go 调试器。