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
http://cs.anu.edu.au/people/Robin.Garner/

Mime
View raw message