相关疑难解决方法(0)

如何可视化堆转储?

我们使用 golang 开发了一个服务器,它将接收并发请求并处理请求(创建大对象 - 一棵树),然后发回回复。但是对象不是垃圾收集的。所以我决定分析生活在内存中的对象。首先,我写了一个简单的程序

package main

import (
    "fmt"
    "io/ioutil"
    "os"
    "runtime/debug"
)

func main() {
    var i_am_a int = 10
    _ = i_am_a
    func() {
        f, err := os.Create("dump")
        defer f.Close()
        if err != nil {
            panic(err)
        }
        debug.WriteHeapDump(f.Fd())
    }()

    b, err := ioutil.ReadFile("dump")
    if err != nil {
        panic(err)
    }
    fmt.Print(string(b))

}
Run Code Online (Sandbox Code Playgroud)

但我无法理解代表(https://github.com/golang/go/wiki/heapdump13 - 这没有帮助)。我想要的只是从内存(大对象)追溯到保存对象根地址的地方(go app 代码中的变量)。这样我就可以释放引用并让 GC 在它的循环中收集它。是否有最新的工具来可视化 heapdump?或者有没有更好的方法来解决这个问题?

debugging garbage-collection go heap-dump

8
推荐指数
1
解决办法
3345
查看次数

标签 统计

debugging ×1

garbage-collection ×1

go ×1

heap-dump ×1