public class sun.jvm.hotspot.tools.FinalizerInfo extends sun.jvm.hotspot.tools.Tool
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.jvm.hotspot.tools.FinalizerInfo
  super_class: sun.jvm.hotspot.tools.Tool
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.jvm.hotspot.tools.FinalizerInfo this
         0: .line 44
            aload 0 /* this */
            invokespecial sun.jvm.hotspot.tools.Tool.<init>:()V
         1: .line 45
            return
        end local 0 // sun.jvm.hotspot.tools.FinalizerInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/jvm/hotspot/tools/FinalizerInfo;

  public void <init>(sun.jvm.hotspot.debugger.JVMDebugger);
    descriptor: (Lsun/jvm/hotspot/debugger/JVMDebugger;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.jvm.hotspot.tools.FinalizerInfo this
        start local 1 // sun.jvm.hotspot.debugger.JVMDebugger d
         0: .line 48
            aload 0 /* this */
            aload 1 /* d */
            invokespecial sun.jvm.hotspot.tools.Tool.<init>:(Lsun/jvm/hotspot/debugger/JVMDebugger;)V
         1: .line 49
            return
        end local 1 // sun.jvm.hotspot.debugger.JVMDebugger d
        end local 0 // sun.jvm.hotspot.tools.FinalizerInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/jvm/hotspot/tools/FinalizerInfo;
            0    2     1     d  Lsun/jvm/hotspot/debugger/JVMDebugger;
    MethodParameters:
      Name  Flags
      d     

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.jvm.hotspot.tools.FinalizerInfo this
         0: .line 53
            ldc "finalizerInfo"
            areturn
        end local 0 // sun.jvm.hotspot.tools.FinalizerInfo this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/jvm/hotspot/tools/FinalizerInfo;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 57
            new sun.jvm.hotspot.tools.FinalizerInfo
            dup
            invokespecial sun.jvm.hotspot.tools.FinalizerInfo.<init>:()V
            astore 1 /* finfo */
        start local 1 // sun.jvm.hotspot.tools.FinalizerInfo finfo
         1: .line 58
            aload 1 /* finfo */
            aload 0 /* args */
            invokevirtual sun.jvm.hotspot.tools.FinalizerInfo.execute:([Ljava/lang/String;)V
         2: .line 59
            return
        end local 1 // sun.jvm.hotspot.tools.FinalizerInfo finfo
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   args  [Ljava/lang/String;
            1    3     1  finfo  Lsun/jvm/hotspot/tools/FinalizerInfo;
    MethodParameters:
      Name  Flags
      args  

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=16, args_size=1
        start local 0 // sun.jvm.hotspot.tools.FinalizerInfo this
         0: .line 76
            ldc "java.lang.ref.Finalizer"
            invokestatic sun.jvm.hotspot.utilities.SystemDictionaryHelper.findInstanceKlass:(Ljava/lang/String;)Lsun/jvm/hotspot/oops/InstanceKlass;
         1: .line 75
            astore 1 /* ik */
        start local 1 // sun.jvm.hotspot.oops.InstanceKlass ik
         2: .line 77
            iconst_1
            anewarray sun.jvm.hotspot.oops.Oop
            astore 2 /* queueref */
        start local 2 // sun.jvm.hotspot.oops.Oop[] queueref
         3: .line 78
            aload 1 /* ik */
            new sun.jvm.hotspot.tools.FinalizerInfo$1
            dup
            aload 0 /* this */
            aload 2 /* queueref */
            invokespecial sun.jvm.hotspot.tools.FinalizerInfo$1.<init>:(Lsun/jvm/hotspot/tools/FinalizerInfo;[Lsun/jvm/hotspot/oops/Oop;)V
            invokevirtual sun.jvm.hotspot.oops.InstanceKlass.iterateStaticFields:(Lsun/jvm/hotspot/oops/OopVisitor;)V
         4: .line 86
            aload 2 /* queueref */
            iconst_0
            aaload
            astore 3 /* queue */
        start local 3 // sun.jvm.hotspot.oops.Oop queue
         5: .line 88
            aload 3 /* queue */
            invokevirtual sun.jvm.hotspot.oops.Oop.getKlass:()Lsun/jvm/hotspot/oops/Klass;
            checkcast sun.jvm.hotspot.oops.InstanceKlass
            astore 4 /* k */
        start local 4 // sun.jvm.hotspot.oops.InstanceKlass k
         6: .line 90
            aload 4 /* k */
            ldc "queueLength"
            ldc "J"
            invokevirtual sun.jvm.hotspot.oops.InstanceKlass.findField:(Ljava/lang/String;Ljava/lang/String;)Lsun/jvm/hotspot/oops/Field;
            checkcast sun.jvm.hotspot.oops.LongField
            astore 5 /* queueLengthField */
        start local 5 // sun.jvm.hotspot.oops.LongField queueLengthField
         7: .line 91
            aload 5 /* queueLengthField */
            aload 3 /* queue */
            invokevirtual sun.jvm.hotspot.oops.LongField.getValue:(Lsun/jvm/hotspot/oops/Oop;)J
            lstore 6 /* queueLength */
        start local 6 // long queueLength
         8: .line 93
            aload 4 /* k */
            ldc "head"
            ldc "Ljava/lang/ref/Reference;"
            invokevirtual sun.jvm.hotspot.oops.InstanceKlass.findField:(Ljava/lang/String;Ljava/lang/String;)Lsun/jvm/hotspot/oops/Field;
            checkcast sun.jvm.hotspot.oops.OopField
            astore 8 /* headField */
        start local 8 // sun.jvm.hotspot.oops.OopField headField
         9: .line 94
            aload 8 /* headField */
            aload 3 /* queue */
            invokevirtual sun.jvm.hotspot.oops.OopField.getValue:(Lsun/jvm/hotspot/oops/Oop;)Lsun/jvm/hotspot/oops/Oop;
            astore 9 /* head */
        start local 9 // sun.jvm.hotspot.oops.Oop head
        10: .line 96
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "Number of objects pending for finalization: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 6 /* queueLength */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 102
            aload 9 /* head */
            ifnull 39
        12: .line 103
            aload 9 /* head */
            invokevirtual sun.jvm.hotspot.oops.Oop.getKlass:()Lsun/jvm/hotspot/oops/Klass;
            checkcast sun.jvm.hotspot.oops.InstanceKlass
            astore 4 /* k */
        13: .line 105
            aload 4 /* k */
            ldc "referent"
            ldc "Ljava/lang/Object;"
            invokevirtual sun.jvm.hotspot.oops.InstanceKlass.findField:(Ljava/lang/String;Ljava/lang/String;)Lsun/jvm/hotspot/oops/Field;
            checkcast sun.jvm.hotspot.oops.OopField
        14: .line 104
            astore 10 /* referentField */
        start local 10 // sun.jvm.hotspot.oops.OopField referentField
        15: .line 107
            aload 4 /* k */
            ldc "next"
            ldc "Ljava/lang/ref/Reference;"
            invokevirtual sun.jvm.hotspot.oops.InstanceKlass.findField:(Ljava/lang/String;Ljava/lang/String;)Lsun/jvm/hotspot/oops/Field;
            checkcast sun.jvm.hotspot.oops.OopField
        16: .line 106
            astore 11 /* nextField */
        start local 11 // sun.jvm.hotspot.oops.OopField nextField
        17: .line 109
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 12 /* map */
        start local 12 // java.util.HashMap map
        18: .line 111
      StackMap locals: sun.jvm.hotspot.tools.FinalizerInfo sun.jvm.hotspot.oops.InstanceKlass sun.jvm.hotspot.oops.Oop[] sun.jvm.hotspot.oops.Oop sun.jvm.hotspot.oops.InstanceKlass sun.jvm.hotspot.oops.LongField long sun.jvm.hotspot.oops.OopField sun.jvm.hotspot.oops.Oop sun.jvm.hotspot.oops.OopField sun.jvm.hotspot.oops.OopField java.util.HashMap
      StackMap stack:
            aload 10 /* referentField */
            aload 9 /* head */
            invokevirtual sun.jvm.hotspot.oops.OopField.getValue:(Lsun/jvm/hotspot/oops/Oop;)Lsun/jvm/hotspot/oops/Oop;
            astore 13 /* referent */
        start local 13 // sun.jvm.hotspot.oops.Oop referent
        19: .line 113
            aload 13 /* referent */
            invokevirtual sun.jvm.hotspot.oops.Oop.getKlass:()Lsun/jvm/hotspot/oops/Klass;
            astore 14 /* klass */
        start local 14 // sun.jvm.hotspot.oops.Klass klass
        20: .line 114
            aload 12 /* map */
            aload 14 /* klass */
            invokevirtual java.util.HashMap.containsKey:(Ljava/lang/Object;)Z
            ifne 22
        21: .line 115
            aload 12 /* map */
            aload 14 /* klass */
            new sun.jvm.hotspot.oops.ObjectHistogramElement
            dup
            aload 14 /* klass */
            invokespecial sun.jvm.hotspot.oops.ObjectHistogramElement.<init>:(Lsun/jvm/hotspot/oops/Klass;)V
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        22: .line 117
      StackMap locals: sun.jvm.hotspot.oops.Oop sun.jvm.hotspot.oops.Klass
      StackMap stack:
            aload 12 /* map */
            aload 14 /* klass */
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.jvm.hotspot.oops.ObjectHistogramElement
            aload 13 /* referent */
            invokevirtual sun.jvm.hotspot.oops.ObjectHistogramElement.updateWith:(Lsun/jvm/hotspot/oops/Oop;)V
        23: .line 119
            aload 11 /* nextField */
            aload 9 /* head */
            invokevirtual sun.jvm.hotspot.oops.OopField.getValue:(Lsun/jvm/hotspot/oops/Oop;)Lsun/jvm/hotspot/oops/Oop;
            astore 15 /* next */
        start local 15 // sun.jvm.hotspot.oops.Oop next
        24: .line 120
            aload 15 /* next */
            ifnull 27
            aload 15 /* next */
            aload 9 /* head */
            invokevirtual sun.jvm.hotspot.oops.Oop.equals:(Ljava/lang/Object;)Z
            ifeq 25
            goto 27
        25: .line 121
      StackMap locals: sun.jvm.hotspot.oops.Oop
      StackMap stack:
            aload 15 /* next */
            astore 9 /* head */
        end local 15 // sun.jvm.hotspot.oops.Oop next
        end local 14 // sun.jvm.hotspot.oops.Klass klass
        end local 13 // sun.jvm.hotspot.oops.Oop referent
        26: .line 110
            goto 18
        27: .line 127
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 13 /* list */
        start local 13 // java.util.ArrayList list
        28: .line 128
            aload 13 /* list */
            aload 12 /* map */
            invokevirtual java.util.HashMap.values:()Ljava/util/Collection;
            invokevirtual java.util.ArrayList.addAll:(Ljava/util/Collection;)Z
            pop
        29: .line 129
            aload 13 /* list */
            new sun.jvm.hotspot.tools.FinalizerInfo$2
            dup
            aload 0 /* this */
            invokespecial sun.jvm.hotspot.tools.FinalizerInfo$2.<init>:(Lsun/jvm/hotspot/tools/FinalizerInfo;)V
            invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
        30: .line 138
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc ""
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        31: .line 139
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Count\tClass description"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        32: .line 140
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "-------------------------------------------------------"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        33: .line 141
            iconst_0
            istore 14 /* i */
        start local 14 // int i
        34: goto 38
        35: .line 142
      StackMap locals: java.util.ArrayList int
      StackMap stack:
            aload 13 /* list */
            iload 14 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast sun.jvm.hotspot.oops.ObjectHistogramElement
            astore 15 /* e */
        start local 15 // sun.jvm.hotspot.oops.ObjectHistogramElement e
        36: .line 143
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 15 /* e */
            invokevirtual sun.jvm.hotspot.oops.ObjectHistogramElement.getCount:()J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "\t"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 15 /* e */
            invokevirtual sun.jvm.hotspot.oops.ObjectHistogramElement.getDescription:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 15 // sun.jvm.hotspot.oops.ObjectHistogramElement e
        37: .line 141
            iinc 14 /* i */ 1
      StackMap locals:
      StackMap stack:
        38: iload 14 /* i */
            aload 13 /* list */
            invokevirtual java.util.ArrayList.size:()I
            if_icmplt 35
        end local 14 // int i
        end local 13 // java.util.ArrayList list
        end local 12 // java.util.HashMap map
        end local 11 // sun.jvm.hotspot.oops.OopField nextField
        end local 10 // sun.jvm.hotspot.oops.OopField referentField
        39: .line 147
      StackMap locals: sun.jvm.hotspot.tools.FinalizerInfo sun.jvm.hotspot.oops.InstanceKlass sun.jvm.hotspot.oops.Oop[] sun.jvm.hotspot.oops.Oop sun.jvm.hotspot.oops.InstanceKlass sun.jvm.hotspot.oops.LongField long sun.jvm.hotspot.oops.OopField sun.jvm.hotspot.oops.Oop
      StackMap stack:
            return
        end local 9 // sun.jvm.hotspot.oops.Oop head
        end local 8 // sun.jvm.hotspot.oops.OopField headField
        end local 6 // long queueLength
        end local 5 // sun.jvm.hotspot.oops.LongField queueLengthField
        end local 4 // sun.jvm.hotspot.oops.InstanceKlass k
        end local 3 // sun.jvm.hotspot.oops.Oop queue
        end local 2 // sun.jvm.hotspot.oops.Oop[] queueref
        end local 1 // sun.jvm.hotspot.oops.InstanceKlass ik
        end local 0 // sun.jvm.hotspot.tools.FinalizerInfo this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   40     0              this  Lsun/jvm/hotspot/tools/FinalizerInfo;
            2   40     1                ik  Lsun/jvm/hotspot/oops/InstanceKlass;
            3   40     2          queueref  [Lsun/jvm/hotspot/oops/Oop;
            5   40     3             queue  Lsun/jvm/hotspot/oops/Oop;
            6   40     4                 k  Lsun/jvm/hotspot/oops/InstanceKlass;
            7   40     5  queueLengthField  Lsun/jvm/hotspot/oops/LongField;
            8   40     6       queueLength  J
            9   40     8         headField  Lsun/jvm/hotspot/oops/OopField;
           10   40     9              head  Lsun/jvm/hotspot/oops/Oop;
           15   39    10     referentField  Lsun/jvm/hotspot/oops/OopField;
           17   39    11         nextField  Lsun/jvm/hotspot/oops/OopField;
           18   39    12               map  Ljava/util/HashMap<Lsun/jvm/hotspot/oops/Klass;Lsun/jvm/hotspot/oops/ObjectHistogramElement;>;
           19   26    13          referent  Lsun/jvm/hotspot/oops/Oop;
           20   26    14             klass  Lsun/jvm/hotspot/oops/Klass;
           24   26    15              next  Lsun/jvm/hotspot/oops/Oop;
           28   39    13              list  Ljava/util/ArrayList<Lsun/jvm/hotspot/oops/ObjectHistogramElement;>;
           34   39    14                 i  I
           36   37    15                 e  Lsun/jvm/hotspot/oops/ObjectHistogramElement;
}
SourceFile: "FinalizerInfo.java"
NestMembers:
  sun.jvm.hotspot.tools.FinalizerInfo$1  sun.jvm.hotspot.tools.FinalizerInfo$2
InnerClasses:
  sun.jvm.hotspot.tools.FinalizerInfo$1
  sun.jvm.hotspot.tools.FinalizerInfo$2