Go Wiki: heapdump15-through-heapdump17

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

はじめに

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

詳細

ファイルは文字列「go1.5 heap dump\n」のバイトで始まります。この説明は、「go1.6 heap dump\n」および「go1.7 heap dump\n」で始まるファイルにも適用されます。go1.6形式は1.5と同一であり、go1.7形式には以下で説明する小さな変更が1つあります。

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

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

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

EOF

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

オブジェクト

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

その他のルート

ゴルーチン(G)

可能なステータス

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

スタックフレーム

ダンプパラメータ

ファイナライザ

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

itab

osthread(M)

メモリ統計

runtime.MemStatsの次のフィールドを記録します

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

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

データ

BSS

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

defer

panic

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

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


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