前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go-标准库-runtime(三)

Go-标准库-runtime(三)

原创
作者头像
堕落飞鸟
发布2023-04-23 07:37:42
1700
发布2023-04-23 07:37:42
举报
文章被收录于专栏:飞鸟的专栏

垃圾回收

runtime包中的垃圾回收机制可以自动地回收不再使用的内存,如下所示:

代码语言:javascript
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 垃圾回收
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档