MST
星途 面试题库

面试题:Go语言中Map内存占用优化之基础策略

在Go语言中,简述使用map时减少内存占用的两种基础策略,并说明其原理。
44.1万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 预分配容量

    • 策略:在创建map时,根据预估的元素数量,使用make(map[keyType]valueType, initialCapacity)来预分配容量。例如,预计map中会有100个元素,m := make(map[string]int, 100)
    • 原理:map的底层实现会根据当前容量动态调整内存。如果不预分配容量,随着元素不断添加,map可能会频繁地进行扩容操作。扩容操作涉及重新分配内存、复制数据,开销较大。预分配合适的容量可以减少这种不必要的扩容,从而减少内存碎片和额外的内存开销。
  2. 使用小的键值类型

    • 策略:选择占用内存小的数据类型作为map的键和值。比如,能用int8就不用int,能用string且长度固定时尽量避免使用大的结构体作为值。例如,m := make(map[int8]int8)
    • 原理:map中每个键值对都会占用一定内存空间,键和值的类型大小直接影响每个元素占用的内存量。使用小的类型,每个元素占用的内存就少,在元素数量较多时,总体内存占用会显著降低。