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

Shenandoah deduplication cleans up table/queue twice

    XMLWordPrintable

    Details

    • Subcomponent:
      gc
    • Resolved In Build:
      b04

      Backports

        Description

        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.

          Attachments

            Issue Links

              Activity

                People

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

                  Dates

                  Created:
                  Updated:
                  Resolved: