<div dir="ltr">It is complex question. You should locate who hold the memory first :)<div>Below codes might help you to locate the process / ets</div><div><br></div><div>```</div><div>applications_memory() -><br>    try application:which_applications() of<br>        Apps -><br>            lists:map(<br>              fun({AppName, _, _}) -><br>                      Mem = application_memory(AppName),<br>                      {AppName, Mem}<br>              end, Apps)<br>    catch<br>        _:Exception -><br>            error_logger:error_msg("[~p] get application memory failed ~p", [?MODULE, Exception]),<br>            undefined<br>    end.<br><br>application_memory(App) -><br>    case  application_controller:get_master(App) of<br>        Master when is_pid(Master) -><br>            {Root, Name} = application_master:get_child(Master),<br>            {Memory, Children} = memory_info(Root),<br>            {Name, Memory div 1000000, Children};<br>        _ -><br>            undefined<br>    end.<br><br>memory_info(Sup) -><br>    Infos = supervisor:which_children(Sup),<br>    {M, E, ES} =<br>    lists:foldl(<br>      fun({Name, PId, Type, _}, {Total, Memories, MemorySets}) -><br>              case Type of<br>                  worker -><br>                      {memory, Memory} = process_info(PId, memory),<br>                      NTotal = Total + Memory,<br>                      case Name of<br>                          undefined -><br>                              NMemorySets =<br>                                  case gb_sets:size(MemorySets) of<br>                                      Size when Size > 10 -><br>                                          {_, NSets} =<br>                                              gb_sets:take_smallest(MemorySets),<br>                                          NSets;<br>                                      _ -><br>                                          MemorySets<br>                                  end,<br>                              NNMemorySets = gb_sets:insert(<br>                                              {undefined, Memory, PId}, NMemorySets),<br>                              {NTotal, Memories, NNMemorySets};<br>                          Name -><br>                                  {NTotal, [{Name, Memory, PId}|Memories], MemorySets}<br>                      end;<br>                  supervisor -><br>                      {Memory, Each} = memory_info(PId),<br>                      NTotal = Total + Memory,<br><br>                      {NTotal, [{Name, {Memory, Each}, PId}|Memories], MemorySets}<br>              end<br>      end, {0, [], gb_sets:new()}, Infos),<br>    NE =<br>        case E of<br>            [] -><br>                gb_sets:to_list(ES);<br>            _ -><br>                E<br>        end,<br>    NNE = lists:map(<br>              fun({N, Mem, PId}) -><br>                      case Mem of<br>                          Mem when is_integer(Mem) -><br>                              {N, Mem div 1000000, undefined, PId};<br>                          {T, RestEach} -><br>                              {N, T div 1000000, PId, RestEach}<br>                      end<br>              end, NE),<br>    NNNE = lists:reverse(lists:keysort(3, NNE)),<br>    {M, NNNE}.<br><br>ets_memory() -><br>    All = ets:all(),<br>    AllMems = lists:map(<br>                fun(Ets) -><br>                        Mem = ets:info(Ets, memory),<br>                        {Ets, Mem}<br>                end, All),<br>    Mems =<br>        lists:sort(<br>          fun({_, M1}, {_, M2}) -><br>                  M1 > M2<br>          end, AllMems),<br>    Sum = lists:sum(lists:map(fun({_, Mem}) -> Mem end, AllMems)),<br>    {Sum, Mems}.<br></div><div>```</div><div><div>Also I recommend  <a href="https://github.com/ferd/recon/blob/master/src/recon_alloc.erl">https://github.com/ferd/recon/blob/master/src/recon_alloc.erl</a> .</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Sep 28, 2019 at 10:03 PM <<a href="mailto:buday.gergely@uni-eszterhazy.hu">buday.gergely@uni-eszterhazy.hu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="ltr"><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr">Hi there,</div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr"><br></div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr">are there experience reports on using Erlang/Elixir on systems with 200 GB of memory and more?</div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr"><br></div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr">If you have a first-hand account on that, please share it with me.</div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr"><br></div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr">My friends are doing that and said that only C++ was capable of handling that.</div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr"><br></div><div style="color:rgb(33,33,33);background-color:rgb(255,255,255);text-align:left" dir="ltr">- Gergely</div></div></div>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature">Jack Tang<br><br><br><a href="http://www.linkedin.com/in/jacktang" target="_blank">http://www.linkedin.com/in/jacktang</a><br></div>