Files
lab/go/basics/runtime/main.go
T
labmem 1a48960022 feat: 添加 Go 内存分配示例并整理笔记
拆分 Go 第三方库笔记并更新索引。
新增 Gitleaks 使用说明,清理过时笔记。
2026-10-08 16:18:54 +08:00

34 lines
645 B
Go

package main
import (
"fmt"
"runtime"
)
var retained [][]byte // 全局变量,用来保持对象可达
func printMemory(stage string) {
var m runtime.MemStats
runtime.ReadMemStats(&m)
fmt.Printf("%s: HeapAlloc=%d MiB, TotalAlloc=%d MiB\n",
stage,
m.HeapAlloc/1024/1024,
m.TotalAlloc/1024/1024)
}
func main() {
runtime.GC()
printMemory("开始")
for i := 0; i < 20; i++ {
block := make([]byte, 1024*1024) // 每次创建约 1 MiB 的底层数组
block[0] = byte(i)
retained = append(retained, block)
}
printMemory("分配后")
retained = nil // 程序不再持有这些数组
runtime.GC()
printMemory("GC 后")
}