Go Wiki: heapdump13

他のバージョンのヒープダンプ形式

はじめに

Go 1.3では、ヒープ内のすべてのオブジェクトと追加情報(ルート、ゴルーチン、ファイナライザなど)をファイルに書き込むruntime/debug.WriteHeapDump関数が追加されました。このファイルの形式については、ここに記載されています。

詳細

ファイルは文字列「go1.3 heap dump\n」のバイトから始まります。

ファイルの残りの部分は、レコードのシーケンスです。レコードはいくつかの異なる種類があります。レコードには次のプリミティブが含まれます。

各レコードは、レコードの種類を表すuvarintでエンコードされた整数から始まります。

各レコードの残りのフィールドは、型に依存し、以下に説明されています。

EOF

EOFレコードにはフィールドがなく、最後に表示する必要があります。

オブジェクト

配列またはチャネルの種類の場合、型はゼロ以外である必要があります。

コンテンツ文字列のサイズは、型自体のサイズではなく、含まれるサイズクラスのサイズです。そのため、コンテンツのサイズは型サイズよりもわずかに大きくなる場合があります。配列型とチャネル型では、はるかに大きくなる可能性があります。たとえば、n個の要素を持つ配列の場合、コンテンツサイズは型サイズのn倍以上になります。

otherroot

ゴルーチン(G)

可能なステータス

待機フィールドはすべての場合に存在する必要がありますが、「待機中」のステータスである場合にのみ意味があります。

スタックフレーム

ダンプパラメータ

ファイナライザ

このファイナライザはランタイムシステムに登録されていますが、参照されているオブジェクトは、最新のGC時点で到達可能であったか、最新のGC以降に割り当てられました。

itab

osthread(M)

memstats

MemStatsの先頭26個のフィールドをダンプします。25番目のフィールドは256個のuvarintでダンプされるのを除き、すべてのフィールドはuvarintでダンプされます。

queuedfinalizer

このファイナライザは実行準備ができています - 参照されているオブジェクトは到達不能です。ランタイムシステムはまだ実行していないだけです。

データ

bss

データと同じ形式ですが、bssセグメント用です。

defer

panic

割り当て/解放プロファイルレコード

割り当てサンプルレコード


このコンテンツは、Go Wikiの一部です。