问题遇到的现象和发生背景
发现一段代码会产生内存泄漏的问题 go版本1.17.8
问题相关代码,请勿粘贴截图
package main
import (
"fmt"
_ "net/http/pprof"
"time"
)
func allocate(s int) {
a := make([]byte, s*1024*1024)
for i := 0; i < len(a); i += 4096 {
a[i] = 'x'
}
fmt.Printf("alloc%c %d\n", a[0], s)
}
func main() {
allocate(100)
allocate(200)
allocate(500)
time.Sleep(300 * time.Second)
}
运行结果及报错内容
内存一直没有进行释放

GC有在工作go_gc_duration_seconds指标

我的解答思路和尝试过的方法
一开始我以为是版本的RSS策略问题结果发现从1.13升级到1.17还有一样的问题
我想要达到的结果
内存会有释放回落