首页 >后端开发 >Golang >Go Map 最初预留多少内存?

Go Map 最初预留多少内存?

Patricia Arquette
Patricia Arquette原创
2024-12-18 19:13:14477浏览

How Much Memory Does a Go Map Initially Reserve?

Go Map 保留多少内存?

在 Go 中,map 是动态分配的,初始容量未指定。这意味着内存分配是特定于实现的。要确定初始内存分配,请查阅映射的内部结构。

映射结构

映射由标头(类型 hmap)和存储桶数组(类型bmap)。在没有初始容量的情况下创建时,会分配单个存储桶。

标头结构和大小

标头包括:

  • 1 * int
  • 2 * uint8
  • 1 * uint16
  • 1 * uint32
  • 2 * unsafe.Pointer
  • 1 * uintptr

int、uintptr 和 unsafe.Pointer 的大小等于字大小(64 位机器上为 8 字节)。因此,标头大小为 40 字节。

桶结构和大小

每个桶包含一个 8 * uint8 的数组。将其添加到标头大小中,我们得到总的初始内存分配:

Header Size (40 bytes) + Bucket Size (8 bytes) = **48 bytes (64-bit architecture)**

以上是Go Map 最初预留多少内存?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn