Except the Hybrid is the wrong way around.. they use the Nursery for allocation ( or at least bump pointer on 2 blocks) and point out the header cost on linear allocations but use the ref counting on the main heap ..
Its just pause times and performance pull in other directions Performance large bulk work .. pauses fine gained work. URC tries to avoid the destruction ( and cycle ) work by using as large a nursery as possible , but if the nursery is too large you get too big global pauses . ( And there are ways of handling this eg read barrier , does the read barrier while nursery sweep is running outweight the overall performance , i kind of like Shaps aging line idea but on a more traditional nursery ( no allocating to partial blocks , many lines in the Nursery) , just sweep 1 line at a time and sweep it into empty or partial blocks as per RC-Immix) Ben On Fri, Oct 18, 2013 at 1:01 AM, Sandro Magi <[email protected]> wrote: > On 17/10/2013 12:46 PM, Jonathan S. Shapiro wrote: > >> There's actually a hidden pause in reference counting as well. >> /Decrementing/ a counter can cause a cascade of deallocations. While that >> cost can be deferred, doing so hazards the main advantage of reference >> counting: rapid recovery of free space. >> > > Indeed. The long-known duality between tracing and ref counting is obvious > when you think of it this way: tracing is worst-case linear in the size of > the heap on allocation, ref counting is worst-case linear in the size of > the heap on destruction. It seems clear then that some hybrid is needed to > eliminate the worst cases of both. > > Sandro > > > _______________________________________________ > bitc-dev mailing list > [email protected] > http://www.coyotos.org/mailman/listinfo/bitc-dev > >
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
