[erlang-questions] memory allocation and constant pool behavior

Paolo Negri <>
Thu May 19 09:23:52 CEST 2011

Dear list

Given the following module


get_configuration(Position) ->
  Configurations = {{2,3}, {4,1}, {9,7}, {2,1}},
  ConfigurationElement = element(Position, Configurations),
  Constant = {10, 9},
  {ConfigurationElement, Constant}.

I'm trying to understand what happens exactly from a memory allocation
point of view when the function get_configuration gets called, here's
an example call

2> Value = example:get_configuration(2).

my understanding is that Configurations and Constant will reside in
the constant pool so they won't be allocated at each single execution,
but what I'm looking for is the memory overhead of building the
resulting tuple.
According to the efficiency guide [1] the size of the resulting tuple is

2 words for the containing tuple
4 words for the the inner tuples
4 words for the integers

which results in 10 words total, but how many new words will actually
be allocated at the moment of invoking the function?

1. http://www.erlang.org/doc/efficiency_guide/advanced.html

Thanks for your answers.


More information about the erlang-questions mailing list