RFR: Mark-compact and heuristics should consistently process refs and unload classes

Aleksey Shipilev shade at redhat.com
Tue May 30 08:48:06 UTC 2017


On 05/30/2017 10:43 AM, Roman Kennke wrote:
> Am 30.05.2017 um 10:28 schrieb Aleksey Shipilev:
>> On 05/30/2017 09:59 AM, Aleksey Shipilev wrote:
>>> We have copied the random block from Aggressive policy to Passive one. The goal
>>> for random selection in Aggressive is to exercise all paths. For Passive, we are
>>> better off being consistent:
>> Actually, let's also cover mark-compact parts:
>>   http://cr.openjdk.java.net/~shade/shenandoah/passive-ur-cu/webrev.01/
>>
>> -Aleksey
>>
> I am not sure about this. I think the intention of the flags controlling
> ref processing and class unloading were meant to affect regular GC
> cycles. Mark-compact is our last-ditch collection and should always
> process refs and unload classes. What would be a good reason to not do that?

I think that -ClassUnloading should disable class unloading even for last ditch
collections. It is a configuration error if disabling class unloading disallows
to reclaim needed space, but we should really honor that command. This is why
mark-compact cares only about it explicitly disabled.

Process weak refs is a bit similar, but this is mostly for internal work:
disabling ref processing should disable it everywhere, including last ditch
collection. This covers for the case when there is an accidental last ditch
collection in the middle of performance experiment.

-Aleksey



More information about the shenandoah-dev mailing list