Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8215549

Shenandoah deduplication cleans up table/queue twice

XMLWordPrintable

    • gc
    • b04

        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.

              zgu Zhengyu Gu
              tschatzl Thomas Schatzl
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: