【问题标题】:Examining Erlang crash dumps - how to account for all memory?检查 Erlang 故障转储 - 如何计算所有内存?
【发布时间】:2011-09-30 18:15:23
【问题描述】:

我一直在仔细研究这个 Erlang 崩溃转储,其中 VM 已用完堆内存。问题是没有明显的罪魁祸首分配所有内存。

使用一些严肃的黑色awk 魔法我总结了每个进程的Stack+heapOldHeapHeap unusedOldHeap unused 字段,并按内存使用情况对它们进行排名。问题在于,根据Erlang crash dump guide,这个数字甚至不接近代表所有进程processes_used 的总内存的数字。

我已经尝试过Crashdump Viewer,但要么我遗漏了一些东西,要么对于我的问题没有太多帮助。

我得到的数字是 525 MB,而 processes_used 的值是 1348 MB。我在哪里可以找到剩余的内存?

编辑:Heap unusedOldHeap unused 不应该被包括在内,因为它们是 Stack+HeapOldHeap 的子部分,再加上为 Stack+Heap 和 @987654335 显示的数字@ 被列为字数,而不是字节数,这是问题所在。

标签: debugging erlang


【解决方案1】:

有一个名为crashdump_viewer 的模块非常适合此类分析。

要记住的另一件事是 Heap+Stack 在文字上是 afaik,而不是字节,这意味着您必须将 Heap+Stack 与 32 上的 4 和 64 位上的 8 相乘。在手册中找不到对此的参考,但Processes 谈到了一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2010-11-22
    • 1970-01-01
    相关资源
    最近更新 更多