<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 16, 2015 at 9:34 PM, Caragea Silviu <span dir="ltr"><<a href="mailto:silviu.cpp@gmail.com" target="_blank">silviu.cpp@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">7. jsonx</blockquote></div><br>This is a shot but I think this library is your problem. When it parses a JSON document, it uses enif_make_sub_binary on the binary() containing the JSON string. This means if you do not use binary:copy() on data you hoist out of the JSON document, then you are keeping the whole document around for as long as you refer to that subbinary. <br><br>Try wrapping strings you hoist out in binary:copy/1. This will slow you down, but it should remove the reference to the original binary which would make your system be able to reclaim that memory. Alternatively, if your system is not highly loaded, you could simply replace jsonx for jsx which is written in Erlang and avoids such problems (at the expense of slower parsing, but JSON will *never* win a parsing race anyway and it is better to swtch the format then).</div><div class="gmail_extra"><br></div><div class="gmail_extra">I've seen systems stuffing such subbinaries into ETS, and then your ETS table is keeping data around.</div><div class="gmail_extra"><br clear="all"><div><br></div>-- <br><div class="gmail_signature">J.</div>
</div></div>