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

Heap dumps should exclude dormant CDS archived objects of unloaded classes

    Details

    • Subcomponent:
    • Resolved In Build:
      b15

      Description

      Similar to JDK-8214756 -- when the JVM creates an hprof dump, it should exclude CDS archived objects whose class is not yet loaded. Otherwise the dumped hprof file would fail to load in heap analysis tools, such as Eclipse Memory Analyzer (MAT).

      public class HelloGC {
        public static void main(String ... args) throws Exception {
          if (args.length > 0) {
            loadArray("java.lang.Byte");
            loadArray("java.lang.Character");
            loadArray("java.lang.Integer");
            loadArray("java.lang.Long");
            loadArray("java.lang.Short");
            loadArray("java.util.HashMap$Node");
            loadArray("jdk.internal.math.FDBigInteger");
            loadArray("sun.util.locale.BaseLocale");
          }

          System.gc();
        }

        static void loadArray(String className) throws Exception {
          Class c = Class.forName(className);
          Object array = java.lang.reflect.Array.newInstance(c, 0);
          System.out.println(array);
        }
      }

      The following produces an hprof file that fails to load in Eclipse MAT with
      "Error: Found instance segment but expected class segment (see FAQ): 0x0". See java_pid8323.hprof in attachment.

      $ java -XX:+HeapDumpAfterFullGC HelloGC

      The problem can be worked around by explicitly loading the required classes before doing the heap dump. See java_pid32027.hprof in attachment.

      $ java -XX:+HeapDumpAfterFullGC HelloGC fixit

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                iklam Ioi Lam
                Reporter:
                iklam Ioi Lam
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: