What is the JVM class loading mechanism?
This article shows you how the JVM class loading mechanism is, the content is concise and easy to understand, can definitely brighten your eyes, through the detailed introduction of this article, I hope you can get something.
1. Java class loading and running process
Load: load a bytecode file, write class information to the method area, and generate a java.lang.Class object
Validating: checking bytecode fil
Prepare: allocate memory to static variables and assign default values
Parsing: replacing symbolic references with direct references
Initialization: assign initialization values to static variables and execute static code blocks
two。 Parent appointment training mechanism
1) parent delegation model of class loader
When no classloader is specified, the default classloader for jvm is AppClassLoader
Advantages: a. To prevent core API from being tampered with, b. Prevent classes from being re-loaded
2) ClassLoader source code
Java.lang.ClassLoader
Protected Class loadClass (String name, boolean resolve) throws ClassNotFoundException {synchronized (getClassLoadingLock (name)) {/ / check whether the current class has been loaded Class c = findLoadedClass (name); if (c = = null) {long t0 = System.nanoTime () Try {if (parent! = null) {/ / parent classloader attempted to load c = parent.loadClass (name, false);} else {/ / boot classloader load c = findBootstrapClassOrNull (name) }} catch (ClassNotFoundException e) {} if (c = = null) {/ / parent class loader is not loaded, then call its own findClass to load the class c = findClass (name);}} if (resolve) {resolveClass (c) } return c;}} the above is what the JVM class loading mechanism is like. Have you learned any knowledge or skills? If you want to learn more skills or enrich your knowledge reserve, you are welcome to follow the industry information channel.