Go Wiki:heapdump14

其他版本的堆转储格式

简介

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

详细信息

该文件以字符串“go1.4 heap dump\n”的字节开头。

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

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

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

EOF

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

对象

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

otherroot

类型

goroutine (G)

可能的状态

等待字段必须始终存在,但只有在状态为“等待”时才有意义。

堆栈帧

转储参数

finalizer

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

itab

osthread (M)

memstats

转储 MemStats 的前 26 个字段。所有字段都使用 uvarint 转储,除了第 25 个字段,它使用 256 个 uvarint 转储。

queuedfinalizer

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

data

bss

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

defer

panic

分配/释放配置文件记录

分配样本记录


此内容是Go Wiki的一部分。