[erlang-questions] process_info

Björn-Egil Dahlberg <>
Fri Feb 21 13:27:16 CET 2014


I want to stress that:
NO, we don't use 40 MB for internal structures.

By internal structure size we mean the size of the C struct for 
implementing the process (in 17.0-rc1 this is 792 bytes).
In erlang:process_info(Pid, memory) we also include the size all 
heap-fragments, typically messages received that are not yet in any of 
the two "real" heaps.

// Björn-Egil, Erlang/OTP

On 2014-02-21 12:00, Sverker Eriksson wrote:
> A process has two heaps, one "old" heap with long lived data and a 
> "new" heap with more recently created data.
>
> 'heap_size' shows only the size of the new heap.
> Newer releases (my git repo goes back to R13B03) contain
> a 'total_heap_size' that also include the old heap.
>
> /Sverker, Erlang/OTP
>
>
> On 02/21/2014 07:14 AM, satoshi kinoshita wrote:
>> Hi,
>>
>> I have a question about process_info().
>>
>> For process <0,477,0> below,
>> heap_size is 6765 words,
>> stack_size is 12 words and
>> memory is 40,149,752 bytes.
>>
>> Erlang doc says 'memory' includes stack, heap and internal structures.
>> In this case, stack + heap is 4*(6765+12)=27,108 bytes.
>>
>> Does this mean most of memory usage(about 40M bytes) are used
>> for "internal structures"?
>>
>> What is "internal structures"???
>>
>> (I'm still using R11B-5 and I don't know it's specific to R11B-5 or not.)
>>
>>
>> Thanks in advance,
>> Kinoshita
>>
>> -------------------------------------------------------
>> ()3> process_info(pid(0,477,0)).
>> [{registered_name,mgs_db_mgse},
>>   {current_function,{gen_server,loop,6}},
>>   {initial_call,{proc_lib,init_p,5}},
>>   {status,waiting},
>>   {message_queue_len,0},
>>   {messages,[]},
>>   {links,[<0.436.0>]},
>>   {dictionary,[{'$ancestors',[mgs_db_sup,<0.435.0>]},
>>                {'$initial_call',{gen,init_it,
>>                                      [gen_server,
>>                                       <0.436.0>,
>>                                       <0.436.0>,
>>                                       {local,mgs_db_mgse},
>>                                       mgs_db_mgse,
>>                                       [60,0,"mgsen-i+up"],
>>                                       []]}}]},
>>   {trap_exit,false},
>>   {error_handler,error_handler},
>>   {priority,normal},
>>   {group_leader,<0.434.0>},
>>   {heap_size,6765},
>>   {stack_size,12},
>>   {reductions,237536590},
>>   {garbage_collection,[{fullsweep_after,65535}]}]
>> ()4> process_info(pid(0,477,0),memory).
>> {memory,40149752}
>>
>> ---http://www.erlang.org/documentation/doc-5.5.5/lib/kernel-2.11.5/doc/html/erlang.html--------------
>>
>>   {heap_size, Size}
>>      Size is the heap size of the process in words.
>>
>>   {stack_size, Size}
>>      Size is the stack size of the process in words.
>>
>>   {memory, Size}
>>      Size is the size of the process in bytes. This includes call
>> stack, heap and internal structures.
>>
>>
>>
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/listinfo/erlang-questions
>
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140221/9e4ec653/attachment.html>


More information about the erlang-questions mailing list