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

NPG: SystemDictionary::find(...) unnecessarily keeps class loaders alive

    XMLWordPrintable

    Details

    • Subcomponent:
    • Introduced In Version:
    • Resolved In Build:
      b22

      Backports

        Description

        Before the PermGen removal a class loader could be garbage collected by a young GC if it didn't load any classes and all references to it were dropped.

        After the PermGen removal, there's an unnecessary call to register_loader in the SystemDictionary::find(...) function:
        ClassLoaderData* loader_data = register_loader(class_loader, CHECK_NULL);

        which prevents these kind of class loader from being garbage collected by the young GCs.

        Fortunately, we don't have to register a ClassLoaderData for the class loader in the find(...) function. The rational is that if we haven't already setup a ClassLoaderData for the class loader, then it won't have an entry in the dictionary, and we can safely return NULL.

        This bug is one of the reasons for the memory footprint regressions seen in:
        JDK-8001590: NPG: Footprint increase when running Jetty

          Attachments

            Issue Links

              Activity

                People

                Assignee:
                stefank Stefan Karlsson
                Reporter:
                stefank Stefan Karlsson
                Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                  Dates

                  Created:
                  Updated:
                  Resolved: