Go Wiki:heapdump15 到 heapdump17

其他版本的堆转储格式

简介

Go 1.5 具有一个 runtime/debug.WriteHeapDump 函数,该函数将堆中的所有对象以及附加信息(根、goroutine、终结器等)写入文件。此文件的格式在此处指定。

详细信息

该文件以字符串“go1.5 heap dump\n”的字节开头。此说明也适用于以“go1.6 heap dump\n”和“go1.7 heap dump\n”开头的文件。go1.6 格式与 1.5 相同,而 go1.7 格式有一个小的更改,如下所述。

文件的其余部分是一系列记录。记录可以是几种不同的类型。记录将包含以下基本类型

每条记录都以 uvarint 编码的整数开头,描述记录的类型

每条记录的其余字段与类型相关,如下所述。

EOF

EOF 记录没有字段,必须最后出现。

object

内容字符串的大小是包含的 sizeclass 的大小,而不是对象本身的大小。因此,内容大小可能比包含对象的类型大一些。

otherroot

type

goroutine (G)

可能的状态

在所有情况下都必须存在等待字段,但仅当状态为“等待”时它们才有意义。

堆栈帧

转储参数

终结器

此终结器已在运行时系统中注册,但它引用的对象在最近的 GC 中可达,或在最近的 GC 之后分配。

itab

osthread (M)

memstats

记录以下字段:runtime.MemStats

queuedfinalizer

此终结器已准备好运行 - 它引用的对象不可达。运行时系统只是还没有开始运行它。

data

bss

格式与 data 相同,但适用于 bss 段。

defer

panic

alloc/free 配置文件记录

alloc 样本记录


此内容是 Go Wiki 的一部分。