深入理解GO语言之GC垃圾回收
package main
import (
"fmt"
"runtime"
"runtime/debug"
"time"
)
func printStats(mem runtime.MemStats) {
runtime.ReadMemStats(&mem)
fmt.Println("Memory Allocation:", mem.Alloc)
fmt.Println("Total Allocation:", mem.TotalAlloc)
fmt.Println("Heap Allocation:", mem.HeapAlloc)
fmt.Println("Heap System:", mem.HeapSys)
fmt.Println("Heap Inuse:", mem.HeapInuse)
fmt.Println("Heap Idle:", mem.HeapIdle)
fmt.Println("Heap Released:", mem.HeapReleased)
fmt.Println("GC Pause:", mem.PauseNs[(mem.NumGC+255)%256])
fmt.Println("---------------------------")
}
func main() {
var mem runtime.MemStats
debug.SetGCPercent(20)
for {
time.Sleep(time.Second)
printStats(mem)
}
}
这段代码设置了GC的内存使用比例为20%,并且每隔一秒钟打印一次内存的使用情况。这样可以观察到内存使用的变化以及GC的行为。这是一个很好的学习和理解GC工作原理的实践方法。
评论已关闭