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

Unnecessary SystemDictionary walk for Protection domain liveness

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 10
    • 9
    • hotspot
    • None
    • b21

      The [system] dictionary is walked to determine the protection domain oops that should be strong roots, so scans the system dictionary to find classes whose initiating loader is the NULL boot loader. The NULL boot loader doesn't initiate any classes not defined in the NULL loader so never has any protection entries in the set.

        // Classes loaded by the bootstrap loader are always strongly reachable.
        // If we're not doing class unloading, all classes are strongly reachable.
        static bool is_strongly_reachable(ClassLoaderData* loader_data, Klass* klass) {
          assert (klass != NULL, "should have non-null klass");
          return (loader_data->is_the_null_class_loader_data() || !ClassUnloading);
        }

      For the case of !ClassUnloading all the protection domain table entries are strong roots, so don't require this walk either.
      This is an unnecessary walk during GC and class unloading.

            coleenp Coleen Phillimore
            coleenp Coleen Phillimore
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: