計算 Go 中映射的記憶體佔用
確定 Go 中映射的記憶體佔用可能會帶來挑戰。編碼/二進位套件的 Size 函數可用於計算切片或固定值的長度,但不能擴展到映射。
為了解決這個問題,我們可以深入研究 Go 映射的內部結構。地圖頭(hmap)包含諸如活細胞數量和桶數量的對數以2為底的資訊。
每個桶(bmap)保存恆定數量的頂部雜湊值,後面是鍵和價值觀。這種組織消除了某些鍵值組合所需的填充。
計算映射的記憶體佔用量涉及對標頭的大小、儲存桶的大小以及儲存在其中的鍵和值的大小求和地圖:
memory_footprint = unsafe.Sizeof(hmap) + (len(theMap) * 8) + (len(theMap) * 8 * unsafe.Sizeof(x)) + (len(theMap) * 8 * unsafe.Sizeof(y))
哪裡:
請注意,與套件共享hmap 結構需要使用彙編程式碼,類似於Go 執行時間中使用的thunk.s 方法。
以上是如何精確計算Go Map的記憶體佔用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!