我知道删除map的键不会释放内存。
那么以下操作会导致map占用的内存连续增加吗?我不太明白背后的原理。
1.定义一个全局变量map
2.重复存储和删除 key
```go
package main
import (
"log"
"runtime"
)
var m = make(map[int]bool)
func main() {
for i := 0; i < 50000; i++ {
m[i] = true
delete(m, i)
readMemStats()
}
}
// 打印内存占用信息
func readMemStats() {
var ms runtime.MemStats
runtime.ReadMemStats(&ms)
log.Printf("Alloc = %v kb TotalAlloc = %v kb Sys = %v kb NumGC = %v\n", ms.Alloc/1024, ms.TotalAlloc/1024, ms.Sys/1024, ms.NumGC)
}
```
会的 ,但是不会马上回收, GC触发有2个机制, 一个是定时2分钟刷一次, 一个是如果内存占用达到阈值gcpercent的2倍, 很明显, 贴主的程序还没有达到这两个要求. 这个是基本常识, 以后不要问了啊.
#3
更多评论