golang map delete 会释放value吗
2 回答
烙印99
TA贡献1829条经验 获得超13个赞
不会释放value,仅仅标记为不可用,但实际内存还是在占用
| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | package main import ( "log" "runtime") var intMap map[int]intvar cnt = 8192 func main() { printMemStats() initMap() runtime.GC() printMemStats() log.Println(len(intMap)) for i := 0; i < cnt; i++ { delete(intMap, i) } log.Println(len(intMap)) runtime.GC() printMemStats() intMap = nil runtime.GC() printMemStats()} func initMap() { intMap = make(map[int]int, cnt) for i := 0; i < cnt; i++ { intMap[i] = i }} func printMemStats() { var m runtime.MemStats runtime.ReadMemStats(&m) log.Printf("Alloc = %v TotalAlloc = %v Sys = %v NumGC = %v\n", m.Alloc/1024, m.TotalAlloc/1024, m.Sys/1024, m.NumGC)} |
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
我最早使用的语言是Java和Python, 并且一直都对Python充满好感, 我喜欢这种很朴实和高效率的感觉, 但我却最后没有采用Python,原因其实也很简单, 我就是不喜欢缩进语法, 就跟很多人换工作仅仅是为了屏幕更大一点一样
- 2 回答
- 0 关注
- 1742 浏览
添加回答
举报
0/150
提交
取消
