【发布时间】:2014-12-24 06:29:18
【问题描述】:
Erlang 引用计数大型二进制文件并创建子二进制文件,以防止在垃圾回收期间释放引用的二进制文件。
我可以在观察者或 erlang:memory() 中看到分配的二进制数量
问题在于,追踪较大二进制文件的来源具有挑战性。是否有任何特定的技术或工具可用于查找要检查的引用数据,或者最初通过跟踪创建引用的函数?
【问题讨论】:
-
我知道这是一个很老的问题,但你能解决这个问题吗?我查看了 Recon 库,但我真的找不到一种方法来确定大型二进制文件的来源。我遇到了类似的问题,并且无法找到任何适用的解决方案。
-
如果您要处理大量二进制数据,这是 Erlang 最棘手的问题之一。 Recon 将指向泄漏引用的进程,您也可以使用 bin_opt_info 进行编译,这可能会给您一些提示。我积极地休眠处理大量二进制文件的进程,并小心处理 binary:copy() 32 字节或更多数据。在我的例子中,大部分问题是将较大二进制文件的小块插入记录或映射结构中,这不允许清除较大的二进制文件。
标签: reference erlang binary-data trace