golang map delete 会释放value吗?

golang map delete 会释放value吗


喵喵时光机
浏览 686回答 2
2回答

四季花海

不会释放value,仅仅标记为不可用,但实际内存还是在占用1234567891011121314151617181920212223242526272829303132333435363738394041424344package&nbsp;main&nbsp;import&nbsp;(&nbsp;&nbsp;&nbsp;&nbsp;"log"&nbsp;&nbsp;&nbsp;&nbsp;"runtime")&nbsp;var&nbsp;intMap&nbsp;map[int]intvar&nbsp;cnt&nbsp;=&nbsp;8192&nbsp;func&nbsp;main()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;printMemStats()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initMap()&nbsp;&nbsp;&nbsp;&nbsp;runtime.GC()&nbsp;&nbsp;&nbsp;&nbsp;printMemStats()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.Println(len(intMap))&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;:=&nbsp;0;&nbsp;i&nbsp;<&nbsp;cnt;&nbsp;i++&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete(intMap,&nbsp;i)&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;log.Println(len(intMap))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;runtime.GC()&nbsp;&nbsp;&nbsp;&nbsp;printMemStats()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intMap&nbsp;=&nbsp;nil&nbsp;&nbsp;&nbsp;&nbsp;runtime.GC()&nbsp;&nbsp;&nbsp;&nbsp;printMemStats()}&nbsp;func&nbsp;initMap()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;intMap&nbsp;=&nbsp;make(map[int]int,&nbsp;cnt)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i&nbsp;:=&nbsp;0;&nbsp;i&nbsp;<&nbsp;cnt;&nbsp;i++&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intMap[i]&nbsp;=&nbsp;i&nbsp;&nbsp;&nbsp;&nbsp;}}&nbsp;func&nbsp;printMemStats()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;m&nbsp;runtime.MemStats&nbsp;&nbsp;&nbsp;&nbsp;runtime.ReadMemStats(&m)&nbsp;&nbsp;&nbsp;&nbsp;log.Printf("Alloc&nbsp;=&nbsp;%v&nbsp;TotalAlloc&nbsp;=&nbsp;%v&nbsp;Sys&nbsp;=&nbsp;%v&nbsp;NumGC&nbsp;=&nbsp;%v\n",&nbsp;m.Alloc/1024,&nbsp;m.TotalAlloc/1024,&nbsp;m.Sys/1024,&nbsp;m.NumGC)}

鸿蒙传说

我最早使用的语言是Java和Python, 并且一直都对Python充满好感, 我喜欢这种很朴实和高效率的感觉, 但我却最后没有采用Python,原因其实也很简单, 我就是不喜欢缩进语法, 就跟很多人换工作仅仅是为了屏幕更大一点一样
打开App,查看更多内容
随时随地看视频慕课网APP