Hasty Briefsbeta

双语

Go Allocation Probe

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