Deep Understanding of Java Virtual Machines - How do Java virtual machines load Java classes?

Keywords: Java jvm Linux

How do Java virtual machines load Java classes? This is the Java class loading mechanism that is often asked in interviews. After the interview at the beginning of the year, the newbie magpie can also reverse this process. However, it's just a literal recitation, just like an endorsement test in school.

tonight! Let's map it to the real world and see how to code the process.

ready! go! - ------------------------------------------------------------------------------------------------------------------------------------------------------------

Class loading mechanism (theoretical part)

Class loading mechanism has three main processes: loading, linking and initialization. Links are subdivided into validation, preparation and parsing.

There are two types of Java language: basic type and reference type. The basic types of Java are predefined by the Java Virtual Machine. The reference types are classified into array classes, classes, interfaces and generic parameters. In JVM, there are only three classes: array classes, classes and interfaces. Array classes are generated directly by Java Virtual Machine, while the other two classes have byte streams.

What about byte streams? The most common is from bytecode files (and from networks, etc.). So I'll analyze the loading mechanism with bytecode files.

1. Loading

Loading is the process of finding byte streams and creating classes accordingly. For array classes, they can be generated directly by the Java virtual machine. For the other two classes, the Java virtual machine needs class loaders to find byte streams.

The relationship between class loaders and classes is just like UI and rendering, which needs to translate business requirements into rendering. The beautiful UI is the class loader, and the rendering is the class.

The class loader has a model: parent delegation.

The Parent Delegation Model delegates the request to the parent class loader for completion each time a class loading request is received. If the parent class loader cannot complete the loading, the child class tries to load itself.

Class loaders are divided into three types: start class loader, extend class loader and application class loader.

Among them,

Application Class Loader is responsible for loading the most basic and important class, that is, loading the core libraries in the <JAVA_HOME>lib directory.

The parent class loader of the extended class loader is the startup class loader. The extended class loader is responsible for loading relatively minor but general classes, that is, loading the extension packages under the <JAVA_HOME>\libext directory.

The parent class loader of the application class loader is the extended class loader. The application class loader is responsible for loading the classes under the application path, that is, the class libraries specified on the user path.

The relationship between these three classloaders can be described as follows:

Whenever a class loader receives a load request, it forwards the request to the parent class loader, which will only attempt to load if the required class is not found in the parent class loader.

For example, when an application loader receives a load request, it will first find out if there are any classes in the parent class loader (extended class loader), but there is also a parent class loader (boot class loader) at the top of the extension class loader, so it will also go to the boot class loader to find out if there are any classes needed, if not, then The extended class loader loads the required classes on its own and passes the reference to the application loader.

Class loaders also have the function of providing namespaces.

In Java virtual machines, the uniqueness of classes is determined by the class loader instance and the full name of the class. Even if the same stream of bytes is loaded by different class loaders, two different classes will be obtained. (Readers can implement this by themselves, loading the same class with two extended class loaders, and then printing class information to verify it.)

 

2. Links

Link: The process of merging created classes into a Java virtual machine to enable it to execute. (Here's a step to validate in the following code)

Links are divided into validation, preparation and parsing.

The purpose of validation is to enable the loaded classes to meet the constraints of the Java Virtual Machine. (Regarding constraints, we will not talk about them today.)

The purpose of preparation is to allocate memory for static fields of loaded classes. In addition, some Java virtual machines are also used to implement dynamic binding method tables for virtual methods.

Next step is an important step in our link-parsing

For a method call, the compiler parses a symbol that can be positioned to a specific target without ambiguity. This symbol contains the name of the class in which the target method resides, the name of the target method, the parameter type received, and the symbol reference of the return value type.

If the symbol reference points to an unloaded class, field, or method, the parsing triggers the loading function.

3. Initialization

Initialization: Assignment of fields marked as constants and execution of the <clinit> method.

Classes are formally executable only after initialization is complete.

When is the initialization step performed?

The JVM specification enumerates the following trigger initialization scenarios:

 

The theoretical part has been explained. (Reference link: https://time.geekbang.org/column/article/11523)

 

Class loading mechanism (Linux view bytecode)

In this regard, the main reason is that there are a lot of theoretical descriptions on the internet, which are also dubious. Better take out the code and convince yourself.

talk is cheap,show the code!

1.classloader

The output is as follows:

The results are amazing. Why is the parent loader of the parent loader (I named it Grandpa class loader myself.) In theory, bootstrap Class Loader should be printed. It's invisible. Post a comment in the code:

* Returns the parent class loader for delegation. Some implementations may
* use <tt>null</tt> to represent the bootstrap class loader. This method
* will return <tt>null</tt> in such implementations if this class loader's
* parent is the bootstrap class loader.

If the parent class loader is the startup class loader, it will return null.

But it still hasn't solved how to find bootstrap Class Loader.

It is not actually a subclass of java.lang.ClassLoader, but is implemented by the JVM itself, through which we can get the implemented class path.

URL[] urls=sun.misc.Launcher.getBootstrapClassPath().getURLs();

2. Links

3. Initialization

1. Compiled singleton class: Singleton.java

public class Singleton{
 private Singleton(){}
 private static class LazyHolder{
    static final Singleton INSTANCE = new Singleton();
    static{
      System.out.println("LazyHolder.<clinit>");
    }
 }
 public static Object getInstance(boolean flag){
  if(flag) return new LazyHolder[2];
  return LazyHolder.INSTANCE;
 }
 public static void main(String... args){
  System.out.println("---");
  getInstance(true);
  System.out.println("---");
  getInstance(false);
 }
}

2. Compile and run

[root@localhost tmp3]# javac Singleton.java 
[root@localhost tmp3]# java Singleton
---
---
LazyHolder.<clinit>

3. View bytecode files (new instructions: java-verbose: class Singleton)

Combined with the output of 2,3, I think I should say something.

In the two paragraphs "---", if there is no print load information, we think it is continuous output. But not yet. According to the loading information, the inner class Singleton$LazyHolder will also be loaded in the middle, which corresponds to getInstance(true);. What does it say? Explains the last sentence of the link in the previous theoretical section:

If the symbol reference points to an unloaded class, field, or method, the parsing triggers the loading function.

Notice here that only the loading function is invoked, the class is created here, and it is not allowed to continue linking and initialization. So there's no typing "Lazy Holder. <clinit>" here.

When getInstance(true) is used, the static constant "LazyHolder.INSTANCE;" which is connected to the new constructor method, satisfies the theoretical interpretation of initialization.

2. Initialize the target class of the new instruction when encountering a new instruction for creating a new instance of the target class
3. Initialize the class where the static field is located when an instruction to access the static field is encountered

Here, you should also have doubts: there is also new when get Instance (false). However, when false, the new is just a new array, which contains only the class references generated at the time of loading.

You can also see the class bytecode below, where the annotations are clearly marked as class references.

  Singleton.class

  public static java.lang.Object getInstance(boolean);
    descriptor: (Z)Ljava/lang/Object;
    flags: ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
         0: iload_0
         1: ifeq          9
         4: iconst_2
         5: anewarray     #3       // class Singleton$LazyHolder
         8: areturn
         9: getstatic     #4       // Field Singleton$LazyHolder.INSTANCE:LSingleton;
        12: areturn
      LineNumberTable:
        line 11: 0
        line 12: 9
      StackMapTable: number_of_entries = 1
        frame_type = 9 /* same */

  public static void main(java.lang.String...);
    descriptor: ([Ljava/lang/String;)V
    flags: ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=2, locals=1, args_size=1
         0: getstatic     #5                  // Field java/lang/System.out:Ljava/io/PrintStream;
         3: ldc           #6                  // String ---
         5: invokevirtual #7                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
         8: iconst_1
         9: invokestatic  #8   // Method getInstance:(Z)Ljava/lang/Object;
        12: pop
        13: getstatic     #5   // Field java/lang/System.out:Ljava/io/PrintStream;
        16: ldc           #6   // String ---
        18: invokevirtual #7   // Method java/io/PrintStream.println:(Ljava/lang/String;)V
        21: iconst_0
        22: invokestatic  #8   // Method getInstance:(Z)Ljava/lang/Object;
        25: pop
        26: return
      LineNumberTable:
        line 15: 0
        line 16: 8
        line 17: 13
        line 18: 21
        line 19: 26

  Singleton(Singleton$1);
    descriptor: (LSingleton$1;)V
    flags: ACC_SYNTHETIC
    Code:
      stack=1, locals=2, args_size=2
         0: aload_0
         1: invokespecial #1                  // Method "<init>":()V
         4: return
      LineNumberTable:
        line 1: 0
}

 

As you can see, in getInstance, what does # 3 and # 4 correspond to?

 

Now?

After looking at the examples, you should also have a little understanding of the class loading mechanism.  

Attachment: All information displayed by java-verbose: class Singleton

  1 [root@localhost tmp3]# java -verbose:class Singleton
  2 [Opened /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
  3 [Loaded java.lang.Object from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
  4 [Loaded java.io.Serializable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
  5 [Loaded java.lang.Comparable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
  6 [Loaded java.lang.CharSequence from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
  7 [Loaded java.lang.String from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
  8 [Loaded java.lang.reflect.AnnotatedElement from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
  9 [Loaded java.lang.reflect.GenericDeclaration from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 10 [Loaded java.lang.reflect.Type from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 11 [Loaded java.lang.Class from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 12 [Loaded java.lang.Cloneable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 13 [Loaded java.lang.ClassLoader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 14 [Loaded java.lang.System from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 15 [Loaded java.lang.Throwable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 16 [Loaded java.lang.Error from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 17 [Loaded java.lang.ThreadDeath from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 18 [Loaded java.lang.Exception from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 19 [Loaded java.lang.RuntimeException from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 20 [Loaded java.lang.SecurityManager from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 21 [Loaded java.security.ProtectionDomain from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 22 [Loaded java.security.AccessControlContext from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 23 [Loaded java.security.SecureClassLoader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 24 [Loaded java.lang.ReflectiveOperationException from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 25 [Loaded java.lang.ClassNotFoundException from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 26 [Loaded java.lang.LinkageError from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 27 [Loaded java.lang.NoClassDefFoundError from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 28 [Loaded java.lang.ClassCastException from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 29 [Loaded java.lang.ArrayStoreException from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 30 [Loaded java.lang.VirtualMachineError from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 31 [Loaded java.lang.OutOfMemoryError from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 32 [Loaded java.lang.StackOverflowError from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 33 [Loaded java.lang.IllegalMonitorStateException from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 34 [Loaded java.lang.ref.Reference from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 35 [Loaded java.lang.ref.SoftReference from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 36 [Loaded java.lang.ref.WeakReference from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 37 [Loaded java.lang.ref.FinalReference from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 38 [Loaded java.lang.ref.PhantomReference from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 39 [Loaded sun.misc.Cleaner from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 40 [Loaded java.lang.ref.Finalizer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 41 [Loaded java.lang.Runnable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 42 [Loaded java.lang.Thread from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 43 [Loaded java.lang.Thread$UncaughtExceptionHandler from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 44 [Loaded java.lang.ThreadGroup from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 45 [Loaded java.util.Map from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 46 [Loaded java.util.Dictionary from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 47 [Loaded java.util.Hashtable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 48 [Loaded java.util.Properties from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 49 [Loaded java.lang.reflect.AccessibleObject from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 50 [Loaded java.lang.reflect.Member from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 51 [Loaded java.lang.reflect.Field from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 52 [Loaded java.lang.reflect.Parameter from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 53 [Loaded java.lang.reflect.Executable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 54 [Loaded java.lang.reflect.Method from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 55 [Loaded java.lang.reflect.Constructor from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 56 [Loaded sun.reflect.MagicAccessorImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 57 [Loaded sun.reflect.MethodAccessor from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 58 [Loaded sun.reflect.MethodAccessorImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 59 [Loaded sun.reflect.ConstructorAccessor from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 60 [Loaded sun.reflect.ConstructorAccessorImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 61 [Loaded sun.reflect.DelegatingClassLoader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 62 [Loaded sun.reflect.ConstantPool from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 63 [Loaded sun.reflect.FieldAccessor from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 64 [Loaded sun.reflect.FieldAccessorImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 65 [Loaded sun.reflect.UnsafeFieldAccessorImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 66 [Loaded sun.reflect.UnsafeStaticFieldAccessorImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 67 [Loaded java.lang.annotation.Annotation from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 68 [Loaded sun.reflect.CallerSensitive from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 69 [Loaded java.lang.invoke.MethodHandle from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 70 [Loaded java.lang.invoke.DirectMethodHandle from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 71 [Loaded java.lang.invoke.MemberName from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 72 [Loaded java.lang.invoke.MethodHandleNatives from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 73 [Loaded java.lang.invoke.LambdaForm from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 74 [Loaded java.lang.invoke.MethodType from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 75 [Loaded java.lang.BootstrapMethodError from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 76 [Loaded java.lang.invoke.CallSite from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 77 [Loaded java.lang.invoke.ConstantCallSite from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 78 [Loaded java.lang.invoke.MutableCallSite from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 79 [Loaded java.lang.invoke.VolatileCallSite from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 80 [Loaded java.lang.Appendable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 81 [Loaded java.lang.AbstractStringBuilder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 82 [Loaded java.lang.StringBuffer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 83 [Loaded java.lang.StringBuilder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 84 [Loaded sun.misc.Unsafe from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 85 [Loaded java.lang.AutoCloseable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 86 [Loaded java.io.Closeable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 87 [Loaded java.io.InputStream from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 88 [Loaded java.io.ByteArrayInputStream from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 89 [Loaded java.io.File from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 90 [Loaded java.net.URLClassLoader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 91 [Loaded java.net.URL from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 92 [Loaded java.util.jar.Manifest from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 93 [Loaded sun.misc.Launcher from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 94 [Loaded sun.misc.Launcher$AppClassLoader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 95 [Loaded sun.misc.Launcher$ExtClassLoader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 96 [Loaded java.security.CodeSource from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 97 [Loaded java.lang.StackTraceElement from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 98 [Loaded java.nio.Buffer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
 99 [Loaded java.lang.Boolean from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
100 [Loaded java.lang.Character from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
101 [Loaded java.lang.Number from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
102 [Loaded java.lang.Float from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
103 [Loaded java.lang.Double from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
104 [Loaded java.lang.Byte from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
105 [Loaded java.lang.Short from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
106 [Loaded java.lang.Integer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
107 [Loaded java.lang.Long from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
108 [Loaded java.lang.NullPointerException from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
109 [Loaded java.lang.ArithmeticException from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
110 [Loaded java.io.ObjectStreamField from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
111 [Loaded java.util.Comparator from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
112 [Loaded java.lang.String$CaseInsensitiveComparator from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
113 [Loaded java.security.Guard from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
114 [Loaded java.security.Permission from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
115 [Loaded java.security.BasicPermission from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
116 [Loaded java.lang.RuntimePermission from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
117 [Loaded java.security.AccessController from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
118 [Loaded java.lang.reflect.ReflectPermission from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
119 [Loaded java.security.PrivilegedAction from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
120 [Loaded sun.reflect.ReflectionFactory$GetReflectionFactoryAction from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
121 [Loaded java.security.cert.Certificate from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
122 [Loaded java.lang.Iterable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
123 [Loaded java.util.Collection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
124 [Loaded java.util.List from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
125 [Loaded java.util.RandomAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
126 [Loaded java.util.AbstractCollection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
127 [Loaded java.util.AbstractList from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
128 [Loaded java.util.Vector from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
129 [Loaded java.util.Stack from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
130 [Loaded sun.reflect.ReflectionFactory from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
131 [Loaded java.lang.ref.Reference$Lock from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
132 [Loaded java.lang.ref.Reference$ReferenceHandler from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
133 [Loaded java.lang.InterruptedException from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
134 [Loaded java.util.ArrayList from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
135 [Loaded java.util.Collections from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
136 [Loaded java.util.Set from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
137 [Loaded java.util.AbstractSet from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
138 [Loaded java.util.Collections$EmptySet from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
139 [Loaded java.util.Collections$EmptyList from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
140 [Loaded java.util.AbstractMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
141 [Loaded java.util.Collections$EmptyMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
142 [Loaded java.util.Collections$UnmodifiableCollection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
143 [Loaded java.util.Collections$UnmodifiableList from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
144 [Loaded java.util.Collections$UnmodifiableRandomAccessList from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
145 [Loaded java.lang.ref.ReferenceQueue from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
146 [Loaded java.lang.ref.ReferenceQueue$Null from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
147 [Loaded java.lang.ref.ReferenceQueue$Lock from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
148 [Loaded sun.misc.JavaLangRefAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
149 [Loaded java.lang.ref.Reference$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
150 [Loaded sun.misc.SharedSecrets from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
151 [Loaded java.lang.IncompatibleClassChangeError from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
152 [Loaded java.lang.NoSuchMethodError from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
153 [Loaded sun.reflect.Reflection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
154 [Loaded java.util.HashMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
155 [Loaded java.util.Map$Entry from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
156 [Loaded java.util.HashMap$Node from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
157 [Loaded sun.misc.VM from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
158 [Loaded java.util.Hashtable$Entry from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
159 [Loaded java.lang.Math from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
160 [Loaded java.lang.ref.Finalizer$FinalizerThread from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
161 [Loaded java.nio.charset.Charset from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
162 [Loaded java.nio.charset.spi.CharsetProvider from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
163 [Loaded sun.nio.cs.FastCharsetProvider from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
164 [Loaded sun.nio.cs.StandardCharsets from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
165 [Loaded sun.util.PreHashedMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
166 [Loaded sun.nio.cs.StandardCharsets$Aliases from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
167 [Loaded sun.nio.cs.StandardCharsets$Classes from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
168 [Loaded sun.nio.cs.StandardCharsets$Cache from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
169 [Loaded java.lang.ThreadLocal from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
170 [Loaded java.util.concurrent.atomic.AtomicInteger from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
171 [Loaded java.lang.Class$3 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
172 [Loaded java.lang.Class$ReflectionData from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
173 [Loaded java.lang.Class$Atomic from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
174 [Loaded sun.reflect.generics.repository.AbstractRepository from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
175 [Loaded sun.reflect.generics.repository.GenericDeclRepository from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
176 [Loaded sun.reflect.generics.repository.ClassRepository from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
177 [Loaded java.lang.Class$AnnotationData from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
178 [Loaded sun.reflect.annotation.AnnotationType from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
179 [Loaded java.util.WeakHashMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
180 [Loaded java.lang.ClassValue$ClassValueMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
181 [Loaded java.lang.reflect.Modifier from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
182 [Loaded sun.reflect.LangReflectAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
183 [Loaded java.lang.reflect.ReflectAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
184 [Loaded java.util.Arrays from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
185 [Loaded sun.nio.cs.HistoricallyNamedCharset from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
186 [Loaded sun.nio.cs.Unicode from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
187 [Loaded sun.nio.cs.UTF_8 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
188 [Loaded java.lang.Class$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
189 [Loaded sun.reflect.ReflectionFactory$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
190 [Loaded sun.reflect.NativeConstructorAccessorImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
191 [Loaded sun.reflect.DelegatingConstructorAccessorImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
192 [Loaded java.lang.StringCoding from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
193 [Loaded java.lang.ThreadLocal$ThreadLocalMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
194 [Loaded java.lang.ThreadLocal$ThreadLocalMap$Entry from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
195 [Loaded java.lang.StringCoding$StringDecoder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
196 [Loaded sun.nio.cs.ArrayDecoder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
197 [Loaded java.nio.charset.CharsetDecoder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
198 [Loaded sun.nio.cs.UTF_8$Decoder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
199 [Loaded java.nio.charset.CodingErrorAction from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
200 [Loaded java.util.Hashtable$EntrySet from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
201 [Loaded java.util.Collections$SynchronizedCollection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
202 [Loaded java.util.Collections$SynchronizedSet from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
203 [Loaded java.util.Objects from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
204 [Loaded java.util.Enumeration from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
205 [Loaded java.util.Iterator from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
206 [Loaded java.util.Hashtable$Enumerator from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
207 [Loaded java.lang.Runtime from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
208 [Loaded sun.misc.Version from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
209 [Loaded java.io.FileInputStream from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
210 [Loaded java.io.FileDescriptor from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
211 [Loaded sun.misc.JavaIOFileDescriptorAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
212 [Loaded java.io.FileDescriptor$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
213 [Loaded java.io.Flushable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
214 [Loaded java.io.OutputStream from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
215 [Loaded java.io.FileOutputStream from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
216 [Loaded java.io.FilterInputStream from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
217 [Loaded java.io.BufferedInputStream from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
218 [Loaded java.util.concurrent.atomic.AtomicReferenceFieldUpdater from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
219 [Loaded java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
220 [Loaded java.security.PrivilegedExceptionAction from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
221 [Loaded java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
222 [Loaded sun.reflect.misc.ReflectUtil from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
223 [Loaded java.io.FilterOutputStream from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
224 [Loaded java.io.PrintStream from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
225 [Loaded java.io.BufferedOutputStream from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
226 [Loaded java.io.Writer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
227 [Loaded java.io.OutputStreamWriter from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
228 [Loaded sun.nio.cs.StreamEncoder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
229 [Loaded sun.security.action.GetPropertyAction from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
230 [Loaded sun.nio.cs.ArrayEncoder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
231 [Loaded java.nio.charset.CharsetEncoder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
232 [Loaded sun.nio.cs.UTF_8$Encoder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
233 [Loaded java.nio.ByteBuffer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
234 [Loaded java.nio.HeapByteBuffer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
235 [Loaded java.nio.Bits from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
236 [Loaded java.nio.ByteOrder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
237 [Loaded java.util.concurrent.atomic.AtomicLong from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
238 [Loaded sun.misc.JavaNioAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
239 [Loaded java.nio.Bits$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
240 [Loaded java.io.BufferedWriter from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
241 [Loaded java.io.DefaultFileSystem from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
242 [Loaded java.io.FileSystem from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
243 [Loaded java.io.UnixFileSystem from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
244 [Loaded java.io.ExpiringCache from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
245 [Loaded java.util.LinkedHashMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
246 [Loaded java.io.ExpiringCache$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
247 [Loaded java.lang.Enum from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
248 [Loaded java.io.File$PathStatus from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
249 [Loaded java.nio.file.Watchable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
250 [Loaded java.nio.file.Path from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
251 [Loaded java.lang.StringCoding$StringEncoder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
252 [Loaded java.lang.ClassLoader$3 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
253 [Loaded java.io.ExpiringCache$Entry from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
254 [Loaded java.util.LinkedHashMap$Entry from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
255 [Loaded java.lang.ClassLoader$NativeLibrary from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
256 [Loaded java.lang.Terminator from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
257 [Loaded sun.misc.SignalHandler from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
258 [Loaded java.lang.Terminator$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
259 [Loaded sun.misc.Signal from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
260 [Loaded sun.misc.NativeSignalHandler from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
261 [Loaded java.lang.Integer$IntegerCache from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
262 [Loaded sun.misc.OSEnvironment from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
263 [Loaded sun.misc.JavaLangAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
264 [Loaded java.lang.System$2 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
265 [Loaded java.lang.IllegalArgumentException from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
266 [Loaded java.lang.Compiler from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
267 [Loaded java.lang.Compiler$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
268 [Loaded java.net.URLStreamHandlerFactory from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
269 [Loaded sun.misc.Launcher$Factory from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
270 [Loaded sun.security.util.Debug from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
271 [Loaded java.lang.ClassLoader$ParallelLoaders from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
272 [Loaded java.util.WeakHashMap$Entry from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
273 [Loaded java.util.Collections$SetFromMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
274 [Loaded java.util.WeakHashMap$KeySet from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
275 [Loaded sun.misc.JavaNetAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
276 [Loaded java.net.URLClassLoader$7 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
277 [Loaded java.util.StringTokenizer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
278 [Loaded sun.misc.Launcher$ExtClassLoader$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
279 [Loaded sun.misc.MetaIndex from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
280 [Loaded java.lang.Readable from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
281 [Loaded java.io.Reader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
282 [Loaded java.io.BufferedReader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
283 [Loaded java.io.InputStreamReader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
284 [Loaded java.io.FileReader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
285 [Loaded sun.nio.cs.StreamDecoder from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
286 [Loaded java.nio.CharBuffer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
287 [Loaded java.nio.HeapCharBuffer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
288 [Loaded java.nio.charset.CoderResult from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
289 [Loaded java.nio.charset.CoderResult$Cache from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
290 [Loaded java.nio.charset.CoderResult$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
291 [Loaded java.nio.charset.CoderResult$2 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
292 [Loaded java.lang.reflect.Array from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
293 [Loaded java.util.HashMap$TreeNode from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
294 [Loaded java.io.FileInputStream$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
295 [Loaded sun.net.www.ParseUtil from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
296 [Loaded java.util.BitSet from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
297 [Loaded java.util.Locale from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
298 [Loaded sun.util.locale.LocaleObjectCache from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
299 [Loaded java.util.Locale$Cache from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
300 [Loaded java.util.concurrent.ConcurrentMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
301 [Loaded java.util.concurrent.ConcurrentHashMap from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
302 [Loaded java.util.concurrent.locks.Lock from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
303 [Loaded java.util.concurrent.locks.ReentrantLock from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
304 [Loaded java.util.concurrent.ConcurrentHashMap$Segment from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
305 [Loaded java.util.concurrent.ConcurrentHashMap$Node from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
306 [Loaded java.util.concurrent.ConcurrentHashMap$CounterCell from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
307 [Loaded java.util.concurrent.ConcurrentHashMap$CollectionView from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
308 [Loaded java.util.concurrent.ConcurrentHashMap$KeySetView from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
309 [Loaded java.util.concurrent.ConcurrentHashMap$ValuesView from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
310 [Loaded java.util.concurrent.ConcurrentHashMap$EntrySetView from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
311 [Loaded sun.util.locale.BaseLocale from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
312 [Loaded sun.util.locale.BaseLocale$Cache from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
313 [Loaded sun.util.locale.BaseLocale$Key from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
314 [Loaded sun.util.locale.LocaleObjectCache$CacheEntry from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
315 [Loaded java.util.Locale$LocaleKey from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
316 [Loaded sun.util.locale.LocaleUtils from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
317 [Loaded java.lang.CharacterData from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
318 [Loaded java.lang.CharacterDataLatin1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
319 [Loaded java.net.Parts from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
320 [Loaded java.net.URLStreamHandler from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
321 [Loaded sun.net.www.protocol.file.Handler from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
322 [Loaded sun.misc.JavaSecurityAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
323 [Loaded java.security.ProtectionDomain$JavaSecurityAccessImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
324 [Loaded sun.misc.JavaSecurityProtectionDomainAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
325 [Loaded java.security.ProtectionDomain$2 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
326 [Loaded java.security.ProtectionDomain$Key from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
327 [Loaded java.security.Principal from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
328 [Loaded java.util.HashSet from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
329 [Loaded sun.misc.URLClassPath from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
330 [Loaded sun.net.www.protocol.jar.Handler from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
331 [Loaded sun.misc.Launcher$AppClassLoader$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
332 [Loaded java.lang.SystemClassLoaderAction from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
333 [Loaded java.lang.invoke.MethodHandleImpl from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
334 [Loaded java.lang.invoke.MethodHandleImpl$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
335 [Loaded java.util.function.Function from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
336 [Loaded java.lang.invoke.MethodHandleImpl$2 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
337 [Loaded java.lang.invoke.MethodHandleImpl$3 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
338 [Loaded java.lang.ClassValue from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
339 [Loaded java.lang.invoke.MethodHandleImpl$4 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
340 [Loaded java.lang.ClassValue$Entry from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
341 [Loaded java.lang.ClassValue$Identity from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
342 [Loaded java.lang.ClassValue$Version from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
343 [Loaded java.lang.invoke.MemberName$Factory from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
344 [Loaded java.lang.invoke.MethodHandleStatics from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
345 [Loaded java.lang.invoke.MethodHandleStatics$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
346 [Loaded sun.misc.PostVMInitHook from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
347 [Loaded sun.usagetracker.UsageTrackerClient from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
348 [Loaded java.util.concurrent.atomic.AtomicBoolean from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
349 [Loaded sun.usagetracker.UsageTrackerClient$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
350 [Loaded sun.usagetracker.UsageTrackerClient$4 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
351 [Loaded sun.usagetracker.UsageTrackerClient$3 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
352 [Loaded java.io.FileOutputStream$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
353 [Loaded sun.launcher.LauncherHelper from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
354 [Loaded java.net.URLClassLoader$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
355 [Loaded sun.net.util.URLUtil from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
356 [Loaded sun.misc.URLClassPath$3 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
357 [Loaded sun.misc.URLClassPath$Loader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
358 [Loaded sun.misc.URLClassPath$JarLoader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
359 [Loaded java.util.zip.ZipConstants from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
360 [Loaded java.util.zip.ZipFile from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
361 [Loaded sun.misc.JavaUtilZipFileAccess from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
362 [Loaded java.util.zip.ZipFile$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
363 [Loaded sun.misc.URLClassPath$FileLoader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
364 [Loaded sun.misc.Resource from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
365 [Loaded sun.misc.URLClassPath$FileLoader$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
366 [Loaded sun.nio.ByteBuffered from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
367 [Loaded sun.misc.PerfCounter from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
368 [Loaded sun.misc.Perf$GetPerfAction from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
369 [Loaded sun.misc.Perf from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
370 [Loaded sun.misc.PerfCounter$CoreCounters from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
371 [Loaded sun.nio.ch.DirectBuffer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
372 [Loaded java.nio.MappedByteBuffer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
373 [Loaded java.nio.DirectByteBuffer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
374 [Loaded java.nio.LongBuffer from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
375 [Loaded java.nio.DirectLongBufferU from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
376 [Loaded java.security.PermissionCollection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
377 [Loaded java.security.Permissions from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
378 [Loaded java.net.URLConnection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
379 [Loaded sun.net.www.URLConnection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
380 [Loaded sun.net.www.protocol.file.FileURLConnection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
381 [Loaded sun.net.www.MessageHeader from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
382 [Loaded java.io.FilePermission from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
383 [Loaded java.io.FilePermission$1 from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
384 [Loaded java.io.FilePermissionCollection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
385 [Loaded java.security.AllPermission from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
386 [Loaded java.security.UnresolvedPermission from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
387 [Loaded java.security.BasicPermissionCollection from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
388 [Loaded Singleton from file:/usr/local/asmtools-7.0-build/binaries/lib/tmp3/]
389 [Loaded sun.launcher.LauncherHelper$FXHelper from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
390 [Loaded java.lang.Class$MethodArray from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
391 [Loaded java.lang.Void from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
392 ---
393 [Loaded Singleton$LazyHolder from file:/usr/local/asmtools-7.0-build/binaries/lib/tmp3/]
394 ---
395 LazyHolder.<clinit>
396 [Loaded java.lang.Shutdown from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]
397 [Loaded java.lang.Shutdown$Lock from /usr/local/jdk1.8.0_111/jre/lib/rt.jar]

 

All the information displayed by javap-verbose Singleton

  1 [root@localhost tmp3]# javap -verbose Singleton
  2 Classfile /usr/local/asmtools-7.0-build/binaries/lib/tmp3/Singleton.class
  3   Last modified Aug 13, 2019; size 770 bytes
  4   MD5 checksum 993ff066c953984c811ff7998d1a8e10
  5   Compiled from "Singleton.java"
  6 public class Singleton
  7   minor version: 0
  8   major version: 52
  9   flags: ACC_PUBLIC, ACC_SUPER
 10 Constant pool:
 11    #1 = Methodref          #9.#26         // Singleton."<init>":()V
 12    #2 = Methodref          #10.#26        // java/lang/Object."<init>":()V
 13    #3 = Class              #27            // Singleton$LazyHolder
 14    #4 = Fieldref           #3.#28         // Singleton$LazyHolder.INSTANCE:LSingleton;
 15    #5 = Fieldref           #29.#30        // java/lang/System.out:Ljava/io/PrintStream;
 16    #6 = String             #31            // ---
 17    #7 = Methodref          #32.#33        // java/io/PrintStream.println:(Ljava/lang/String;)V
 18    #8 = Methodref          #9.#34         // Singleton.getInstance:(Z)Ljava/lang/Object;
 19    #9 = Class              #35            // Singleton
 20   #10 = Class              #36            // java/lang/Object
 21   #11 = Class              #37            // Singleton$1
 22   #12 = Utf8               InnerClasses
 23   #13 = Utf8               LazyHolder
 24   #14 = Utf8               <init>
 25   #15 = Utf8               ()V
 26   #16 = Utf8               Code
 27   #17 = Utf8               LineNumberTable
 28   #18 = Utf8               getInstance
 29   #19 = Utf8               (Z)Ljava/lang/Object;
 30   #20 = Utf8               StackMapTable
 31   #21 = Utf8               main
 32   #22 = Utf8               ([Ljava/lang/String;)V
 33   #23 = Utf8               (LSingleton$1;)V
 34   #24 = Utf8               SourceFile
 35   #25 = Utf8               Singleton.java
 36   #26 = NameAndType        #14:#15        // "<init>":()V
 37   #27 = Utf8               Singleton$LazyHolder
 38   #28 = NameAndType        #38:#39        // INSTANCE:LSingleton;
 39   #29 = Class              #40            // java/lang/System
 40   #30 = NameAndType        #41:#42        // out:Ljava/io/PrintStream;
 41   #31 = Utf8               ---
 42   #32 = Class              #43            // java/io/PrintStream
 43   #33 = NameAndType        #44:#45        // println:(Ljava/lang/String;)V
 44   #34 = NameAndType        #18:#19        // getInstance:(Z)Ljava/lang/Object;
 45   #35 = Utf8               Singleton
 46   #36 = Utf8               java/lang/Object
 47   #37 = Utf8               Singleton$1
 48   #38 = Utf8               INSTANCE
 49   #39 = Utf8               LSingleton;
 50   #40 = Utf8               java/lang/System
 51   #41 = Utf8               out
 52   #42 = Utf8               Ljava/io/PrintStream;
 53   #43 = Utf8               java/io/PrintStream
 54   #44 = Utf8               println
 55   #45 = Utf8               (Ljava/lang/String;)V
 56 {
 57   public static java.lang.Object getInstance(boolean);
 58     descriptor: (Z)Ljava/lang/Object;
 59     flags: ACC_PUBLIC, ACC_STATIC
 60     Code:
 61       stack=1, locals=1, args_size=1
 62          0: iload_0
 63          1: ifeq          9
 64          4: iconst_2
 65          5: anewarray     #3                  // class Singleton$LazyHolder
 66          8: areturn
 67          9: getstatic     #4                  // Field Singleton$LazyHolder.INSTANCE:LSingleton;
 68         12: areturn
 69       LineNumberTable:
 70         line 11: 0
 71         line 12: 9
 72       StackMapTable: number_of_entries = 1
 73         frame_type = 9 /* same */
 74 
 75   public static void main(java.lang.String...);
 76     descriptor: ([Ljava/lang/String;)V
 77     flags: ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
 78     Code:
 79       stack=2, locals=1, args_size=1
 80          0: getstatic     #5                  // Field java/lang/System.out:Ljava/io/PrintStream;
 81          3: ldc           #6                  // String ---
 82          5: invokevirtual #7                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
 83          8: iconst_1
 84          9: invokestatic  #8                  // Method getInstance:(Z)Ljava/lang/Object;
 85         12: pop
 86         13: getstatic     #5                  // Field java/lang/System.out:Ljava/io/PrintStream;
 87         16: ldc           #6                  // String ---
 88         18: invokevirtual #7                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
 89         21: iconst_0
 90         22: invokestatic  #8                  // Method getInstance:(Z)Ljava/lang/Object;
 91         25: pop
 92         26: return
 93       LineNumberTable:
 94         line 15: 0
 95         line 16: 8
 96         line 17: 13
 97         line 18: 21
 98         line 19: 26
 99 
100   Singleton(Singleton$1);
101     descriptor: (LSingleton$1;)V
102     flags: ACC_SYNTHETIC
103     Code:
104       stack=1, locals=2, args_size=2
105          0: aload_0
106          1: invokespecial #1                  // Method "<init>":()V
107          4: return
108       LineNumberTable:
109         line 1: 0
110 }
111 SourceFile: "Singleton.java"
112 InnerClasses:
113      static #11; //class Singleton$1

Posted by stolzyboy on Thu, 15 Aug 2019 08:49:52 -0700