内存不足时如何在golang中创建堆转储?

gal*_*ben 5 go heap-dump

有没有办法让应用程序在内存不足时将堆转储写入文件?

我正在寻找该应用程序的全球解决方案。

小智 1

有一个用于此目的的分析器工具go tool pprofpprof包。该pprof包将允许您获取有关当前内存分配以及总(累积)内存分配的信息。还有一个选项可以创建 HTTP 端点以进行分析net/http/pprof

对于更简单的实现(没有 HTTP),您只需导入runtime/pprof然后调用pprof.WriteHeapProfile("some_file.prof")将信息写入文件。稍后可以使用 来检查输出文件go tool pprof some_file.prof

我不确定如何检测您的应用程序内存不足。但是,当您的应用程序收到操作系统因高内存使用率而发出的终止信号时,您可以WriteHeapProfile启动它。defer

资料来源:

  1. 包运行时/pprof
  2. 分析 Go 程序
  3. 我如何在大型代码库上使用 pprof 调查 Go 中的内存泄漏
  4. 使用 pprof 在 Go 中进行热转储