> recon_alloc:memory(allocated).
49221632
> os:getpid().
"5656"
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22443 root 20 0 5763100 1.345g 2964 S 1.1 8.7 96:59.10 beam.smp
5656 root 20 0 5253972 1.001g 4736 S 2.2 6.4 35:05.21 beam.smp
我发现在erlang vm中看到的内存比从os分配的内存小得多,这意味着我的erlang节点发生内存泄漏。
是否可以找到发生内存泄漏的位置?
答案 0 :(得分:1)
我写了https://www.erlang-in-anger.com/和recon
一起解释了其中的一些内容。它全部是免费的,并且几乎包含了此问题所需的一切。您将要查看第7章(内存泄漏),尤其是有关内存碎片的7.3节。
本质上,您可以查看recon_memory中的其他函数,以了解哪种类型的分配器在针对各种块大小的分配中使用率较低,然后使用分配策略进行优化。