V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
echo404
V2EX  ›  Go 编程语言

求助: golang gctrace 跟踪到的 gc 次数为什么不是递增的

  •  
  •   echo404 · 2022-03-25 18:32:06 +08:00 · 1152 次点击
    这是一个创建于 1000 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在项目中使用了一下堆 ballast ,想利用 GODEBUG=gctrace=1 查看一下 gc 情况,发现一个比较费解的地方:image-20220325111721230

    我看煎鱼以及其他网上的资料,gctrace 追踪到的 gc 次数都是递增的,为什么我的项目中像存在 2 个并行的 GC 循环一样,而且它们获取到堆大小也不一样,一个才 6MB 左右,另一个有 1G 多,难道一个 go 进程中还有 2 个不同的堆么?

    我在网上找了很多文章也没能解决这个疑惑,v 站的大佬们有了解这块的么?

    2 条回复    2022-03-26 22:26:25 +08:00
    ansi395958
        1
    ansi395958  
       2022-03-25 23:12:22 +08:00   ❤️ 1
    你应该是 GODEBUG=gctrace=1 go run xxx 而不是 go build -o xxx 然后 GODEBUG=gctrace=1 ./xxx 。
    `go` 和被他启动的程序都是 go 程序,所以你传了这个变量会打印出两个不同的 GC 序列。
    echo404
        2
    echo404  
    OP
       2022-03-26 22:26:25 +08:00
    @ansi395958 多谢老哥,试了一下确实是这个原因
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4019 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:10 · PVG 12:10 · LAX 20:10 · JFK 23:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.