[erlang-questions] Understanding memory usage
Erik Søe Sørensen
eriksoe@REDACTED
Mon Jan 28 09:46:17 CET 2013
2013/1/26 Ward Bekker (TTY) <ward@REDACTED>
> Hi,
>
> I run into high memory usage (>1.5GB) when running `crack_util:crack` from
> this module: https://gist.github.com/4642789 (make sure crypto is
> running: `crypto:start()`). As far as I can see, it's not creating (or
> holding on to) huge pieces of data.
>
> Why is that?
>
It happens in this line:
lists:seq(0, Products-1)).
because
Products = round(math:pow(length(?CHAR_LIST), TryLength)) = 59^5 = 714924299
lists:seq() is, as anything else in Erlang, calculated eagerly, so you get
a full representation of the list.
In a 32-bit Erlang VM, that takes 5,7GB.
You may want to write a function that folds over a range of integers, and
use that instead of lists:foldl(_,_,lists:seq(A,B)) :-)
/Erik
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130128/9fa44be6/attachment.htm>
More information about the erlang-questions
mailing list