字典有个很严重的问题,当然不同语言实现可能不一样,但起码对Go来说字典有个很大的麻烦。把数据填入以后,你把它删除以后它不会收缩内存。
const max = 10000000
func one() map[int]int {
// 创建字典
m := make(map[int]int)
//写入100w数据
for i := 0; i < max; i++ {
m[i] = i
}
//把所有数据全部删掉
for i := 0; i < max; i++ {
delete(m, i)
}
return m
}
func ten() []map[int]int {
var ms []map[int]int
cnt := 100
for i := 0; i < max; i++ {
ms[i%cnt][i] = i
}
for i := 0; i < max; i++ {
delete(ms[i%cnt], i)
}
return ms
}
func main() {
m := one()
// m:= ten()
for i := 0; i < 100; i++ {
runtime.GC()
time.Sleep(time.Second)