Go Wiki: heapdump13

其他版本的堆疊傾印格式

簡介

Go 1.3 新增一個 runtime/debug.WriteHeapDump 函式,可將堆疊中的所有物件加上其他資訊(根、goroutine、完成處理常式等)寫入檔案。此檔案的格式在此指定。

詳細資料

檔案以字串「go1.3 heap dump\n」的位元組開頭。

檔案的其餘部分是一連串的記錄。記錄可以是數種不同的種類。記錄將包含下列基本型別

每筆記錄都以 uvarint 編碼的整數開頭,說明記錄的類型

每筆記錄的剩餘欄位取決於類型,說明如下。

EOF

EOF 記錄沒有欄位,而且必須出現在最後。

物件

對於陣列或通道種類,類型不可為零。

內容字串的大小是包含的 sizeclass 大小,而不是類型本身的大小。因此,內容大小可能會比類型大小大一些。對於陣列和通道類型來說,它可能會大很多。例如,具有 n 個元素的陣列的內容大小將大於或等於類型大小的 n 倍。

otherroot

類型

goroutine (G)

可能的狀態

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

堆疊框架

傾印參數

完成函式

此完成函式已向執行時期系統註冊,但它所引用的物件在最近一次 GC 時仍可存取,或是在最近一次 GC 之後才配置。

itab

作業系統執行緒 (M)

memstats

傾印 MemStats 的前 26 個欄位。所有欄位都使用 uvarint 傾印,但第 25 個欄位使用 256 個 uvarint 傾印。

queuedfinalizer

此完成函式已準備好執行 - 它所引用的物件不可存取。執行時期系統只是尚未執行它。

資料

bss

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

defer

panic

配置/釋放剖析記錄

配置範例記錄


此內容為 Go Wiki 的一部分。