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

Go Map 最初预留多少内存?

Patricia Arquette
发布: 2024-12-18 19:13:14
原创
482 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板