Go-标准库-runtime(二)
2023-06-13 09:18:48 时间
内存分配
runtime包中的内存分配函数可以动态地分配和释放内存,如下所示:
package main
import (
"fmt"
"runtime"
)
func main() {
var mem runtime.MemStats
runtime.ReadMemStats(&mem)
fmt.Println("Before allocation:")
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)
data := make([]byte, 1024*1024*1024)
fmt.Println("After allocation:")
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)
data = nil
runtime.GC()
fmt.Println("After 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)
}
上面的代码先打印出内存分配前的内存信息,然后分配1GB的内存,再次打印出内存分配后的内存信息,然后将分配的内存置为nil,触发垃圾回收,最后再次打印出内存回收后的内存信息。
相关文章
- Go 编程 | 连载 06 - 基本数据类型转换(strconv)
- 化整为零优化重用,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang函数的定义和使用EP07
- go 布隆过滤器_布隆过滤器 redis
- Go 数据结构和算法篇(十一):字符串匹配之 BF 算法
- 「Go工具箱」go语言csrf库的使用方式和实现原理
- GO语言开篇-Go语言急速入门(基础知识点)| 青训营笔记
- Go 语言数据类型
- 2023-04-12:使用 Go 重写 FFmpeg 的 extract_mvs.c 工具程序,提取视频中的运动矢量信息。
- Go-标准库-sync(二)
- Go-标准库-testing(四)
- Go-标准库-text(三)
- Go-标准库-context(二)
- Go-标准库-runtime(四)
- Go-标准库-runtime(五)
- Go-包管理-go get(二)
- Go-包管理-go install
- Go-模板引擎(一)
- Go语言标准库强大
- go pprof命令(Go语言性能分析命令)完全攻略
- Go从入门到精通(一)go语言初识详解编程语言
- go 排序sort的使用详解编程语言
- go语言变量作用域详解编程语言
- Go语言Socket编程详解
- Go语言连接Oracle数据库实战(go连接oracle)
- 深度探索Go语言与Redis结合(go-redis)
- 程序Linux上运行Go语言程序的指南(linux运行go)
- 简易教程:如何在 Linux 上安装 GO 语言(go语言安装linux)
- 语言结合SQL Server,Go谱写新篇章(sqlserver的go)
- Go语言与Linux:全新的开发环境体验(go语言linux)
- 徒手用Go编写Redis迈向新技术世界的旅程(徒手用go写个redis)
- 一步一步学习Go读取Oracle数据库(go读取oracle)
- Redis集群搭建Go的艰难之路(redis集群搭建go)