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 記錄沒有欄位,且必須出現在最後。

物件

內容字串的大小是包含的 sizeclass 大小,而不是物件本身的大小。因此,內容大小可能比所包含物件的類型略大。

otherroot

類型

goroutine (G)

可能的狀態

等待欄位在所有情況下都必須存在,但只有在狀態為「等待」時才有意義。

堆疊架構

傾印參數

finalizer

此 finalizer 已向執行時間系統註冊,但它所參照的物件在最近一次 GC 時仍可存取,或自最近一次 GC 之後才配置。

itab

osthread (M)

memstats

記錄下列 runtime.MemStats 欄位

queuedfinalizer

此完成處理函式已準備好執行 - 它所參照的物件無法存取。執行時期系統尚未執行它。

資料

bss

格式與資料相同,但適用於 bss 區段。

defer

panic

配置/釋放剖析記錄

配置範例記錄


此內容是 Go Wiki 的一部分。