RFR: Defer cleaning of system dictionary and friends to parallel cleaning phase
Zhengyu Gu
zgu at redhat.com
Tue Jan 16 19:48:25 UTC 2018
On 01/16/2018 01:15 PM, Roman Kennke wrote:
> Am 16.01.2018 um 19:09 schrieb Aleksey Shipilev:
>> On 01/16/2018 06:59 PM, Roman Kennke wrote:
>>> Found this during traversal GC work: when cleaning the system
>>> dictionary and friends, we do clean it
>>> in the first pass, *single threaded* and then do the cleaning stuff
>>> again, but multi-threaded. We
>>> shall defer cleaning to the parallel phase to begin with. That's what
>>> G1 does too.
>>>
>>> http://cr.openjdk.java.net/~rkennke/defer_cleaning/webrev.00/
>>>
>>
>> Awwwwwwww.
>>
>> Note that in G1, there are two calls to do_unloading: one from
>> weak_refs_work with "false", and
>> another from mark_sweep_phase1 with default "true".
>
> For ordinary concurrent GCs, it cleans everything in parallel phase, and
> thus passes 'false' to do_unloading(). For full-GC, I guess they don't
> care and do everything single-threaded.
>
>> Are you saying that doing this once with "false" is enough? It looks
>> that ParallelCleaning stuff
>> purges ResolvedMethodTable, but does it do
>> ClassLoaderDataGraph::do_unloading with
>> clean_previous_versions? Maybe we should cautiously say "full_gc", not
>> "false" in the patch, so
>> last-ditch can still do it?
>
> I believe the ParallelCleaning handles everything. Zhengyu?
ParallelCleaning does handle ResolvedMethodTable ...
-Zhengyu
>
> Roman
More information about the shenandoah-dev
mailing list