<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Aug 31, 2012, at 7:39 PM, Rodrigo Kumpera wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Unless you use explicit memory management or some other trick, such scheme is not any better than what both collectors already do.<div><br></div><div>Both use a size-segregated allocator for the major heap which works very much like an object pool based on size.</div>
<div><br></div><div>Object pools work when allocating memory is very expensive. With an modern GC, the major cost is not allocation, but tracing.<br><br></div></blockquote><div><br></div><div>I guess I'm searching for some solution that is at least as good as boehm for my working set, but without the current memory size limitations.</div><div><br></div><div>I achieve much better performance when using object pools, of course because of the explicit object release, avoiding the cost of tracing. </div><div><br></div><br><blockquote type="cite"><div><br><div class="gmail_quote">On Fri, Aug 31, 2012 at 8:18 PM, Jonathan Shore <span dir="ltr"><<a href="mailto:jonathan.shore@gmail.com" target="_blank">jonathan.shore@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">I use object pools where I have control over the lifecycle of objects used with high frequency.    In the application I was discussing with respect to sgen, it is very hard to explicitly use object pools (nor can I use structs in this case).<div>
<br></div><div>I think Miguel mentioned briefly in a blog, but would be interesting to have a non-MS compatible extension or special Mono namespace library / runtime support for automatic object pooling.    I have a number of applications that need to deal with billions of objects cycled through.   Instead of bending over backwards to try to fit in an explicit ObjectPool model, would love to be able to designate a maximum fixed size pool that would be handled as a special case by the GC:</div>
<div><br></div><div><ol><li>whenever new <someobject> () is invoked, the runtime will attempt to pull from an existing object in pool</li><ol><li>if the pool is full, a GC sweep is done to determine whether any of the objects / slots in the pool are now garbage, perhaps compacting or just marking.</li>
</ol><li>when an object becomes garbage, nothing explicit happens, is only marked & reused on the next new.</li></ol><div><br></div></div><div>I realize this is not part of the MS CLR spec, but is *very* useful for all sorts of high throughput services and processing.   It seems like a much simplified form of what sgen or beohm would be doing.</div>
<div><br></div><div>Thoughts?</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>Jonathan</div><div><br></div><div> </div></font></span></div><br>_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></body></html>