Go Wiki: heapdump14

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

はじめに

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

詳細

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

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

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

各レコードの残りのフィールドは、タイプ依存であり、以下に説明されています。

EOF

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

オブジェクト

コンテンツ文字列のサイズは、オブジェクト自体のサイズではなく、含まれているサイズクラスのサイズです。そのため、コンテンツサイズは、含まれているオブジェクトの型よりもやや大きくなる可能性があります。

その他のルート

ゴルーチン (G)

可能な状態

待機フィールドはすべての場合に存在する必要がありますが、「待機中」の状態の場合にのみ意味を持ちます。

スタックフレーム

ダンプパラメータ

ファイナライザ

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

itab

OSスレッド (M)

メモリ統計

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

キューに入れられたファイナライザ

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

データ

BSS

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

defer

panic

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

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


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