Go Allocation Probe
10 months ago
- #profiling
- #memory-allocation
- #Go
- Go性能分析工具能显示内存分配位置但无法显示类型信息
- 为此开发了定制工具go_allocation_probe,通过bpftrace实现按类型追踪内存分配
- 该工具挂钩Go的mallocgc函数来捕获内存大小和类型参数
- 通过可执行文件数据段的偏移量解析类型名称
- 部分内存分配会传入nil作为类型指针,需要额外探针处理
- 该工具成功识别出频繁分配的*string类型
- 解决方案采用脆弱但有效的代码实现类型指针到名称的映射