RFR: Defer cleaning of system dictionary and friends to parallel cleaning phase
Roman Kennke
rkennke at redhat.com
Tue Jan 16 18:15:27 UTC 2018
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?
Roman
More information about the shenandoah-dev
mailing list