1个G的slice,实际内存占用相差甚远的原因
来源:1-13 Go 语言的内存管理与垃圾回收
快哉快哉
2021-06-07 10:55:05
package main
import "time"
func main() {
a := make([]int,2<<30)
_ = a
time.Sleep(time.Hour)
}
上面应该是分配了1个G的 slice
看到的是500多M
请问下这种现象和操作系统(linux/window/macOs)是否有区别?以及少去的400多M大致的原因。
1回答
操作系统是惰性分配内存的,没有访问到的地址可能要访问触发缺页中断才会真正分配
比如你在go里make一个1gb的slice但是从来不访问,就不会真的分配1gb
和不同系统的内存分配策略也确实有关系
相似问题