作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我们使用 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))
}
但我无法理解表示(https://github.com/golang/go/wiki/heapdump13 - 这没有帮助)。我想要的只是从内存(大对象)追溯到保存对象根地址的地方(go app 代码中的变量)。这样我就可以释放引用并让 GC 在它的循环中收集它。是否有最新的工具来可视化堆转储?或者有更好的方法来解决这个问题吗?
最佳答案
目前,您的问题没有完整的解决方案。 newest heap dump format解释了运行时不再跟踪以前可用的一些信息。
Go Issue 16410有很多关于正在进行的工作的细节和信息。
一个工具 - 正在进行的工作 - 可能有帮助是 goheapdump
关于debugging - 如何可视化堆转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41542775/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!