harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robin Garner <robin.gar...@anu.edu.au>
Subject Re: [drlvm] Class unloading support - tested one approach
Date Thu, 09 Nov 2006 16:10:40 GMT
Etienne Gagnon wrote:
>> OK.  My latest proposal (a few messages ago) was assuming that the
>> nursery was empty when the "end of epoch collection" is launched.
>> If it is not, you can do 2 things:
>> a) do a minor collection to empty it, or
>> b) i  - use a finalization-like list of references to class loader
>>         objects
>>    ii - launch gc, which might mark a previously unmarked vtable
>>    iii- do a finalization-like rescuing for resuscitated class loaders
>> "b)" should really have a minimal performance impact.  As for its
>> "apparent complexity", I would say that this is a non-issue; similar
>> code must already exist in drlvm for implementing finalization.
> Just for clarification: "b)" implies a combined "nursery + mature space"
> collection.
> Actually, for the mature space part, you could get away with a smaller
> collection if you premature all class loaders and classes to a specific
> mature space area; the you only need to collect that space (in addition
> to the nursery).
> Etienne

This sounds rather 'stop the world' - while the barrier is more 
complicated I think it scales to concurrent collectors.

Also, don't forget an instance of a class in the nursery can pass a 
reference to its classloader to a mature-space object under suitably 
bizarre circumstances.  I guess you could have a write barrier on the 
class metadata space ...

... an XOR barrier could actually be an interesting solution ... but I'm 
sure it won't be necessary.

Robin Garner
Dept. of Computer Science
Australian National University

View raw message