package main
import (
"log"
"runtime"
)
var lastTotalFreed uint64 // size of last memory has been freed
func InitMap(a map[int]int) {
for i := 0; i < 100000; i++ {
a[i] = i
}
}
func ClearMap(a map[int]int) {
for i := 0; i < 100000; i++ {
delete(a, i)
}
}
var a map[int]int
func main() {
a = make(map[int]int)
printMemStats()
InitMap(a)
runtime.GC()
printMemStats()
ClearMap(a)
runtime.GC()
printMemStats()
a = nil
runtime.GC()
printMemStats()
}
func printMemStats() {
var m runtime.MemStats
runtime.ReadMemStats(&m)
log.Printf("Alloc = %v TotalAlloc = %v Just Freed = %v Sys = %v NumGC = %v\n",
m.Alloc/1024, m.TotalAlloc/1024, ((m.TotalAlloc-m.Alloc)-lastTotalFreed)/1024, m.Sys/1024, m.NumGC)
lastTotalFreed = m.TotalAlloc - m.Alloc
}