检查Erlang崩溃转储 - 如何计算所有内存?

Fyl*_*lke 3 debugging erlang

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

使用一些严重的黑awk魔法我已经总结出来的领域Stack+heap,OldHeap,Heap unusedOldHeap unused为每个进程和内存使用率名列其中.问题是processes_used根据Erlang崩溃转储指南,这个数字甚至没有接近代表所有进程总内存的数字.

我已经尝试过Crashdump Viewer,或者我错过了一些东西,或者对我的问题没什么帮助.

我得到的数字是525 MB,而processes_used值是1348 MB.我在哪里可以找到其余的记忆?

编辑:Heap unused并且OldHeap unused不应该包含它,因为它们是和的子部分,Stack+Heap并且OldHeap加上显示的数字Stack+HeapOldHeap被列为单词数而不是字节的事实是问题所在.

Luk*_*kas 6

有一个名为crashdump_viewer的模块,非常适合这类分析.

要记住的另一件事是Heap + Stack是单词,而不是字节,这意味着你必须将Heap + Stack与32位上的4和64位上的8相乘.无法在手册中找到这方面的参考,但是过程谈论了一下.