[erlang-questions] Memory management

Per Gustafsson per.gustafsson@REDACTED
Thu Apr 26 16:13:18 CEST 2007

Ladislav Lenart wrote:
> Hello,
> During testing of our application we found that a larger instance
> consumes about 80% (800MB) of system memory when it is actively doing
> something. When it is only "loaded" but not started (all the processes
> are there but no messages are sent), it consumes about 11% of system
> memory. We have no idea what can make for such a big difference so
> we started to wonder how does the erlang runtime decide to perform
> a GC?
> Thanks,
> Ladislav Lenart
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions

When a process is created in Erlang it has a Heap consisting of 233 
words. When this space has been exhausted a garbage collection is 
performed and if the live data takes up more than 75 % of the total heap 
size then the size of the heap is increased (To the next fibonacci 
number) and if it takes up less than 25 % of available heap space the 
heap size is decreased.
(The 75% and 25% figures are not necessarily correct and a process heap 
newer shrinks below 233 words)

Thus the heaps for each process are growing and shrinking as the program 
executes. This is necessary for a system which handles hundreds of 
thousands of processes because if each process had a fixed heap size 
then if the process which has most live data uses S words and there are 
  N processes the system would use S*N words.


More information about the erlang-questions mailing list