Go 映射中的記憶體分配:特定於實現的查詢
在 Go 映射的世界中,記憶體分配是一個謎。初始化映射時缺少初始容量參數使得分配空間的大小受實現的影響。但是我們要如何揭開這個隱藏分配的秘密呢?
深入研究 Go Map 原始碼會發現一個由標頭和桶數組組成的結構。在未指定初始空間的情況下,對應僅包含單一儲存桶。
標頭本身就是一個名副其實的字段迷宮:
1 uintptr
在 64 位元機器上,int、uintptr 和 unsafe.Pointer 的大小與字元大小對齊(8 位元組)。此組合為標頭產生總共 40 個位元組。 現在,讓我們將注意力轉向儲存桶,其中包含 8 個 uint8 元素的陣列。這為總計數增加了 8 個位元組。 組合這些元件,我們得到總共 48 個位元組(對於 64 位元架構)。有了這些知識,我們就可以自信地揭開 Go 中映射記憶體分配的不確定性面紗。以上是最初為空的 Go Map 分配多少記憶體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!