[erlang-questions] Erlang code loading

CGS cgsmcmlxxv@REDACTED
Mon Nov 21 13:30:11 CET 2011


Sorry for not being explicit. I was referring not only to the data, but 
also to the code itself. As far as I noticed, Erlang does not make any 
difference between loading the same module in different processes and 
different modules in different processes. Each process instance is 
independent and does not share any bit of its memory with other 
instances (it can copy, but does not share). I might be wrong in my 
observation, though (only a developer can be 100% sure).

My test consisted in starting the same piece of code in two different 
Erlang sessions (processes as you call them) and I noticed the same 
memory consumption for each (top -d 1 -p <PID of the system process 
where your code is loaded>). You can test that as well and compare it 
with the beam size. As I said, I might be wrong because my code has a 
certain level of granularity which doesn't allow very large functions (I 
avoid large functions for better monitoring the states).

I hope this answer will at least help you to convince yourself about 
which answer is correct.

CGS





On 11/21/2011 12:51 PM, Max Bourinov wrote:
> About the process data it is absolutely clean how Erlang handles it. I 
> just want some clarification about the code.
>
>
> Best regards,
> Max
>
>
>
>
> 2011/11/21 CGS <cgsmcmlxxv@REDACTED <mailto:cgsmcmlxxv@REDACTED>>
>
>     One instance per process, one memory allocation per process (even
>     if it is the same code running). Erlang has no explicit knowledge
>     of beam shared objects as far as I know. If somebody knows
>     differently, please, correct me.
>
>     CGS
>
>
>
>
>
>     On 11/21/2011 12:40 PM, Max Bourinov wrote:
>>     Thank you for your reply! But in Erlang processes, not threads.
>>     There are some differences between them...
>>
>>
>>
>>     Отправлено с iPhone
>>
>>     21.11.2011, в 15:05, CGS <cgsmcmlxxv@REDACTED
>>     <mailto:cgsmcmlxxv@REDACTED>> написал(а):
>>
>>>     Hi, Max,
>>>
>>>     Not an expert, but I think the memory is multiplied by the
>>>     number of threads. Meaning, you start with an initial heap for
>>>     that thread and add to that the states and other internal
>>>     variables (repeat that for all the threads). At least that I
>>>     noticed from my codes by now. If I am wrong, I apologize.
>>>
>>>     Cheers,
>>>     CGS
>>>
>>>
>>>
>>>
>>>     On 11/21/2011 11:57 AM, Max Bourinov wrote:
>>>>     Hi Erlangers,
>>>>
>>>>     I am wondering how my Erlang app would behave in this case:
>>>>
>>>>     I have a lot identical processes (the same module, state of
>>>>     couse is different in each process). The module that I swap
>>>>     many times has a huge function. I want to clarify how much
>>>>     memory it will take? It will take memory for that huge function
>>>>     in each process or only once?
>>>>
>>>>     I believe it will take memory only once, but I want to make sure.
>>>>
>>>>     Best regards,
>>>>     Max
>>>>
>>>>
>>>>
>>>>     _______________________________________________
>>>>     erlang-questions mailing list
>>>>     erlang-questions@REDACTED  <mailto:erlang-questions@REDACTED>
>>>>     http://erlang.org/mailman/listinfo/erlang-questions
>>>
>>>     _______________________________________________
>>>     erlang-questions mailing list
>>>     erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
>>>     http://erlang.org/mailman/listinfo/erlang-questions
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20111121/5f49ae0d/attachment.htm>


More information about the erlang-questions mailing list