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

Reply via email to