首次提交:初始化项目代码

This commit is contained in:
sunct
2026-07-31 15:18:32 +08:00
commit d6393266b0
193 changed files with 14287 additions and 0 deletions
+43
View File
@@ -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 {}
}