[erlang-questions] Garbage Collection, BEAM memory and Erlang memory
Fri Jan 23 15:09:50 CET 2015
Hi Jesper, thank you for your input.
My hunch is you are holding on to binary values for too long in some
> processes, or are storing a ref-c binary in ETS which keeps the underlying
> binary alive. The two major ways to handle this has already been mentioned.
I'm not storing binaries in a ETS. Also, I don't see anywhere I'm holding
binary values for too long.
> If you are picking apart a large binary, and you need to reference
> *binary* data in it, then it may be beneficial to break that binary data
> <<Payload:Len/binary, "\r\n", Rest/binary>> = Packet,
> CPayload = binary:copy(Payload),
> but as Dan says, copying `Rest` in this case is a bad idea. You just copy
> the very binary you are running over and processing. Also note that it is
> important you are picking out binary data. If you had something like
> <<I:32/integer, "\r\n", Rest/binary>>
> then the integer conversion already excises the data from the binary, so
> you don't have to keep the binary around anymore.
Ok, as per this suggestion I removed copying the Rest.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions