首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
"time"
|
||||
)
|
||||
|
||||
func main() {
|
||||
runtime.GC()
|
||||
// 设置GOGC为一个非常大的值,相当于几乎不触发GC
|
||||
oldGCPercent := debug.SetGCPercent(999999)
|
||||
defer debug.SetGCPercent(oldGCPercent) // 恢复默认设置
|
||||
|
||||
printMemStats("初始状态")
|
||||
|
||||
// 分配 1GB 内存
|
||||
var bigSlice [][]byte
|
||||
for i := 0; i < 1024; i++ {
|
||||
bigSlice = append(bigSlice, make([]byte, 1024*1024))
|
||||
}
|
||||
printMemStats("分配 1GB 内存后")
|
||||
|
||||
// 等待 sysmon 触发 GC(超 2 分钟)
|
||||
fmt.Println("等待 sysmon 触发 GC(125 秒)...")
|
||||
time.Sleep(125 * time.Second)
|
||||
|
||||
printMemStats("sysmon 触发 GC 后")
|
||||
fmt.Println("验证完成:内存占用回落,防止泄漏")
|
||||
}
|
||||
|
||||
func printMemStats(stage string) {
|
||||
var mStats runtime.MemStats
|
||||
runtime.ReadMemStats(&mStats)
|
||||
allocMB := mStats.Alloc / 1024 / 1024
|
||||
fmt.Printf("[%s] 已分配内存:%d MB\n", stage, allocMB)
|
||||
}
|
||||
Reference in New Issue
Block a user