【问题标题】:Finding erlang binary references查找 erlang 二进制引用
【发布时间】:2014-12-24 06:29:18
【问题描述】:

Erlang 引用计数大型二进制文件并创建子二进制文件,以防止在垃圾回收期间释放引用的二进制文件。

我可以在观察者或 erlang:memory() 中看到分配的二进制数量

问题在于,追踪较大二进制文件的来源具有挑战性。是否有任何特定的技术或工具可用于查找要检查的引用数据,或者最初通过跟踪创建引用的函数?

【问题讨论】:

  • 我知道这是一个很老的问题,但你能解决这个问题吗?我查看了 Recon 库,但我真的找不到一种方法来确定大型二进制文件的来源。我遇到了类似的问题,并且无法找到任何适用的解决方案。
  • 如果您要处理大量二进制数据,这是 Erlang 最棘手的问题之一。 Recon 将指向泄漏引用的进程,您也可以使用 bin_opt_info 进行编译,这可能会给您一些提示。我积极地休眠处理大量二进制文件的进程,并小心处理 binary:copy() 32 字节或更多数据。在我的例子中,大部分问题是将较大二进制文件的小块插入记录或映射结构中,这不允许清除较大的二进制文件。

标签: reference erlang binary-data trace


【解决方案1】:

erlang:process_info/2 call 的第二个参数为binary 可能会有所帮助,但总的来说,您应该看看Recon library,因为我相信它可以帮助您解决这个问题。它的作者 Fred Hébert 在他的博客中发布了 highly useful article about using it

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-22
    • 2015-06-01
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2014-08-27
    相关资源
    最近更新 更多