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>