debugging - 有没有办法知道谁拥有对 Go 中对象的引用?

标签 debugging go memory-leaks

我目前正在尝试调试 our Go code 中的严重内存泄漏。 .

我知道的:

  • 内存的去向(pprof 带有 -base 标志)
  • 为什么要分配新内存(我们代码中的“重新连接”功能)
  • goroutine 的数量没有增加(runtime.NumGoroutine())
  • 如果我执行 object = nil,内存将被垃圾回收(很好!但现在我与使用此对象的其他 go-routines 发生数据竞争)

我不知道的:

  • 为什么没有对新内存进行垃圾回收。为此,我需要知道谁拥有一个对象的引用。

感谢您的宝贵时间和任何建议!

最佳答案

我可以推荐两个工具。

使用 Go Guru , 查看谁指向或引用了一个指针。它与 vim-go 集成在一起。我使用的插件,我在那个 here 上做了一个帖子.

Valgrind是一个 C/C++ 的工具,但是找到了一篇关于在 Go 中使用它的文章。

关于debugging - 有没有办法知道谁拥有对 Go 中对象的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48499573/

相关文章:

perl - 是否有调试基于 Perl 的 Web 应用程序的好工具?

go - 视频流优化

go - 将 firestore "integer_value"转换为整数

ruby - 从 Rails 3.0 升级到 Rails 3.2(Ruby 1.9.3 + Passenger)后出现巨大的内存泄漏/膨胀

java - 如何在 java 中找到匿名类的 GC 根?

android - Android NDK + SDK开发需要一个IDE

debugging - ‘backtrace full’命令,以十六进制输出

objective-c - iOS/ManagedObjectContext 中的内存管理

objective-c - 为什么我的 xcode 在设置断点时跳转到程序集 View ?

go - Go,FreeBSD,iovec和syscalls