runtime包中的垃圾回收机制可以自动地回收不再使用的内存,如下所示:
package main
import (
"fmt"
"runtime"
"time"
)
func main() {
var mem runtime.MemStats
runtime.ReadMemStats(&mem)
fmt.Printf("Alloc = %v MiB\n", mem.Alloc/1024/1024)
fmt.Printf("TotalAlloc = %v MiB\n", mem.TotalAlloc/1024/1024)
fmt.Printf("HeapAlloc = %v MiB\n", mem.HeapAlloc/1024/1024)
fmt.Printf("HeapSys = %v MiB\n", mem.HeapSys/1024/1024)
for i := 0; i < 10000; i++ {
data := make([]byte, 1024*1024)
time.Sleep(time.Millisecond)
}
runtime.GC()
runtime.ReadMemStats(&mem)
fmt.Printf("Alloc = %v MiB\n", mem.Alloc/1024/1024)
fmt.Printf("TotalAlloc = %v MiB\n", mem.TotalAlloc/1024/1024)
fmt.Printf("HeapAlloc = %v MiB\n", mem.HeapAlloc/1024/1024)
fmt.Printf("HeapSys = %v MiB\n", mem.HeapSys/1024/1024)
}
上面的代码先打印出内存分配前的内存信息,然后分配10000个1MB的内存块,并睡眠1毫秒,以便让垃圾回收机制起作用。最后打印出内存回收后的内存信息。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。