[erlang-questions] How can I release beam memory?

Jack Tang <>
Fri Jan 13 10:05:10 CET 2017


Hello list,

I run one Erlang application on Debian server and today I find the beam
process consumes around 35G memory by `top` command.

```
KiB Mem:  99194912 total, 61682656 used, 37512252 free,   397380 buffers
KiB Swap:        0 total,        0 used,        0 free. 18684864 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
11858 usr1   20   0 36.850g 0.032t   6220 S  73.5 34.4   8038:49 beam.smp
```

I connect to the Erlang application using remote shell and find the
mem-leaked supervisor tree and run gc on the whole tree. Code looks like
blow:

```
lists:foreach(fun(E) -> PId = element(2, E), erlang:garbage_collect(PId)
end, supervisor:which_children(some_thing_sup)).
```

and erlang:memory() decreases from 32G to 23G.
```
[{total,22982011544},
 {processes,12884182336},
 {processes_used,12884170336},
 {system,10097829208},
 {atom,13828705},
 {atom_used,13796692},
 {binary,170530288},
 {code,16450626},
 {ets,9637717576}]
```

However, when I input `top` command, the beam process still takes 35G
memory. What can I do to release the 9G memory? Thanks

BR
-- 
Jack Tang


http://www.linkedin.com/in/jacktang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20170113/e6f68571/attachment.html>


More information about the erlang-questions mailing list