首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
"time"
|
||||
)
|
||||
|
||||
// printGCStats 打印GC核心统计信息
|
||||
func printGCStats() {
|
||||
var stats runtime.MemStats
|
||||
runtime.ReadMemStats(&stats)
|
||||
|
||||
fmt.Println("===== GC 统计信息 =====")
|
||||
fmt.Printf("当前堆分配内存: %d MB\n", stats.Alloc/1024/1024) // 等价于HeapAlloc
|
||||
fmt.Printf("存活使用堆内存: %d MB\n", stats.HeapInuse/1024/1024) // 真正的存活内存
|
||||
fmt.Printf("空闲待回收内存: %d MB\n", stats.HeapIdle/1024/1024) // 垃圾内存
|
||||
fmt.Printf("累计 STW 时长: %.3f ms\n", float64(stats.PauseTotalNs)/1e6)
|
||||
fmt.Printf("GC 总次数: %d\n", stats.NumGC)
|
||||
fmt.Printf("最近一次 STW 时长: %.3f μs\n", float64(stats.PauseNs[(stats.NumGC+255)%256])/1e3)
|
||||
fmt.Printf("下一次GC触发阈值: %d MB\n", stats.NextGC/1024/1024) // 下次GC的内存阈值
|
||||
fmt.Println("=======================\n")
|
||||
}
|
||||
|
||||
func main() {
|
||||
// 后台定时打印GC状态
|
||||
go func() {
|
||||
for {
|
||||
printGCStats()
|
||||
time.Sleep(3 * time.Second)
|
||||
}
|
||||
}()
|
||||
|
||||
// 模拟高频内存分配,触发GC
|
||||
data := make([][]byte, 0)
|
||||
for i := 0; i < 100; i++ {
|
||||
data = append(data, make([]byte, 10*1024*1024)) // 每次分配10MB
|
||||
time.Sleep(200 * time.Millisecond)
|
||||
}
|
||||
|
||||
// 阻塞程序退出
|
||||
select {}
|
||||
}
|
||||
Reference in New Issue
Block a user