runtime: shrink map as elements are deleted 缩容

runtime: shrink map as elements are deleted 缩容

runtime: shrink map as elements are deleted

runtime: shrink map as elements are deleted · Issue #20135 · golang/go · GitHub https://github.com/golang/go/issues/20135

package mainimport ("fmt""runtime")func main() {// runtime: shrink map as elements are deleted · Issue #20135 · golang/go · GitHub https://github.com/golang/go/issues/20135v := struct{}{}a := make(map[int]struct{})for i := 0; i < 10000; i++ {a[i] = v}runtime.GC()printMemStats("After Map Add 100000")for i := 0; i < 10000-1; i++ {delete(a, i)}runtime.GC()printMemStats("After Map Delete 9999")for i := 0; i < 10000-1; i++ {a[i] = v}runtime.GC()printMemStats("After Map Add 9999 again")a = nilruntime.GC()printMemStats("After Map Set nil")}func printMemStats(mag string) {var m runtime.MemStatsruntime.ReadMemStats(&m)fmt.Printf("%v:memory = %vKB, GC Times = %v\n", mag, m.Alloc/1024, m.NumGC)}

 

After Map Add 100000:memory = 277KB, GC Times = 1
After Map Delete 9999:memory = 278KB, GC Times = 2
After Map Add 9999 again:memory = 102KB, GC Times = 3
After Map Set nil:memory = 102KB, GC Times = 4

 

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部