As a light experiment, to isolate garbage collection, I ran this:<br><br>4&gt; memory().<br>[{total,367371832},<br>�{processes,139434000},<br>�{processes_used,139430112},<br>�{system,227937832},<br>�{atom,514765},<br>�{atom_used,488348},<br>
�{binary,157628784},<br>�{code,3880064},<br>�{ets,64744732}]<br><br>(rabbit@vs-dfw-ctl11)5&gt; [erlang:garbage_collect(P) || P &lt;- erlang:processes()].<br>[true,true,true,true,true,true,true,true,true,true,true,<br>�true,true,true,true,true,true,true,true,true,true,true,true,<br>
�true,true,true,true,true,true|...]<br><br>(rabbit@vs-dfw-ctl11)6&gt; memory().��������������������������������������������� <br>[{total,145833144},<br>�{processes,50900752},<br>�{processes_used,50896864},<br>�{system,94932392},<br>
�{atom,514765},<br>�{atom_used,488348},<br>�{binary,24622512},<br>�{code,3880064},<br>�{ets,64745716}]<br><br>This really cut down on usage, so its likely that the binary gc is falling behind rabbits requirements. How do I track down the uncollected binary heap usage to a process?<br>
<br>_steve<br><br><div class="gmail_quote">On Thu, Oct 22, 2009 at 1:50 PM, Stephen Day <span dir="ltr">&lt;<a href="mailto:sjaday@gmail.com">sjaday@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Unfortunately, the system has crashed since the last outputs I provided, but the behavior remains. There definitely seems to be some memory held up in the persister, but I dont think this is the main source. Below, I printed out the memory for the process, gc&#39;d it, then printed it again:<br>

<br>1&gt; process_info(whereis(rabbit_persister)).<br>[{registered_name,rabbit_persister},<br>�{current_function,{gen_server2,process_next_msg,8}},<br>�{initial_call,{proc_lib,init_p,5}},<br>�{status,waiting},<br>�{message_queue_len,0},<br>

�{messages,[]},<br>�{links,[&lt;0.76.0&gt;,&lt;0.188.0&gt;]},<br>�{dictionary,[{&#39;$ancestors&#39;,[rabbit_sup,&lt;0.75.0&gt;]},<br>������������� {&#39;$initial_call&#39;,{rabbit_persister,init,1}}]},<br>�{trap_exit,true},<br>

�{error_handler,error_handler},<br>�{priority,normal},<br>�{group_leader,&lt;0.74.0&gt;},<br>�{total_heap_size,43398670},<br>�{heap_size,5135590},<br>�{stack_size,13},<br>�{reductions,128289510},<br>�{garbage_collection,[{fullsweep_after,65535},<br>

��������������������� {minor_gcs,49}]},<br>�{suspending,[]}]<br>2&gt; garbage_collect(whereis(rabbit_persister)).<br>true<br>3&gt; process_info(whereis(rabbit_persister)).�� <br>[{registered_name,rabbit_persister},<br>�{current_function,{gen_server2,process_next_msg,8}},<br>

�{initial_call,{proc_lib,init_p,5}},<br>�{status,waiting},<br>�{message_queue_len,0},<br>�{messages,[]},<br>�{links,[&lt;0.76.0&gt;,&lt;0.188.0&gt;]},<br>�{dictionary,[{&#39;$ancestors&#39;,[rabbit_sup,&lt;0.75.0&gt;]},<br>

������������� {&#39;$initial_call&#39;,{rabbit_persister,init,1}}]},<br>�{trap_exit,true},<br>�{error_handler,error_handler},<br>�{priority,normal},<br>�{group_leader,&lt;0.74.0&gt;},<br>�{total_heap_size,987},<br>�{heap_size,610},<br>

�{stack_size,13},<br>�{reductions,133572480},<br>�{garbage_collection,[{fullsweep_after,65535},{minor_gcs,6}]},<br>�{suspending,[]}]<br><br>So, even the though this collected quite a bit of memory, we can see that the binary allocation is still large:<br>

<br>4&gt; memory().<br>[{total,906056008},<br>�{processes,72681252},<br>�{processes_used,72668564},<br>�{system,833374756},<br>�{atom,515733},<br>�{atom_used,490081},<br>�{binary,769103232},<br>�{code,3890441},<br>�{ets,58694668}]<br>

<br>Is there a way I can print the allocators for this binary memory?<br><font color="#888888"><br>-Stephen<br>
</font></blockquote></div><br>