-
Bug
-
Resolution: Fixed
-
P4
-
12, 13
-
b04
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8218744 | 12.0.2 | Zhengyu Gu | P4 | Resolved | Fixed | b01 |
In ShenandoahHeap::unload_classes_and_cleanup_tables(), Shenandoah cleans up various weakly held data structures during gc.
The following code:
{
ShenandoahGCPhase phase(full_gc ?
ShenandoahPhaseTimings::full_gc_purge_par :
ShenandoahPhaseTimings::purge_par);
uint active = _workers->active_workers();
ParallelCleaningTask unlink_task(is_alive, active, purged_class, true);
_workers->run_task(&unlink_task);
}
if (ShenandoahStringDedup::is_enabled()) {
ShenandoahGCPhase phase(full_gc ?
ShenandoahPhaseTimings::full_gc_purge_string_dedup :
ShenandoahPhaseTimings::purge_string_dedup);
ShenandoahStringDedup::parallel_cleanup();
}
does string deduplication twice, once during the ParallelCleaningTask and after that directly again.
The following code:
{
ShenandoahGCPhase phase(full_gc ?
ShenandoahPhaseTimings::full_gc_purge_par :
ShenandoahPhaseTimings::purge_par);
uint active = _workers->active_workers();
ParallelCleaningTask unlink_task(is_alive, active, purged_class, true);
_workers->run_task(&unlink_task);
}
if (ShenandoahStringDedup::is_enabled()) {
ShenandoahGCPhase phase(full_gc ?
ShenandoahPhaseTimings::full_gc_purge_string_dedup :
ShenandoahPhaseTimings::purge_string_dedup);
ShenandoahStringDedup::parallel_cleanup();
}
does string deduplication twice, once during the ParallelCleaningTask and after that directly again.
- backported by
-
JDK-8218744 Shenandoah deduplication cleans up table/queue twice
-
- Resolved
-