JVM Tutorials - Herong's Tutorial Examples - v5.13, by Herong Yang
What Is Class Loader
This section describes what is Java Class Loader - Part of the Java Runtime Environment (JRE) that dynamically loads Java classes into the Java Virtual Machine (JVM).
What Is Class Loader? Class Loader is a part of the Java Runtime Environment (JRE) that dynamically loads Java classes into the Java Virtual Machine (JVM).
Class Loader is designed as a hierarchical delegation tree with these basic concepts:
Here is a simple diagram that illustrates the ClassLoader delegation tree:
Based JVM documentations, here are my understandings on Bootstrap, Extensions and System ClassLoaders:
1. Bootstrap ClassLoader - The root ClassLoader: Created by the JVM and represented as "null". Responsible to load JVM system classes located in <JAVA_HOME>/lib folder.
2. Extensions ClassLoader - Created by the JVM and represented as a sun.misc.Launcher$ExtClassLoader object. Responsible to load JVM extension classes located in <JAVA_HOME>/lib/ext folder.
3. System ClassLoader - Created by the JVM and represented as a sun.misc.Launcher$AppClassLoader object. Responsible to load Application classes specified in the "classpath".
Table of Contents
JVM (Java Virtual Machine) Specification
Java HotSpot VM - JVM by Oracle/Sun
java.lang.Runtime Class - The JVM Instance
java.lang.System Class - The Operating System
►ClassLoader Class - Class Loaders
What Is java.lang.ClassLoader Class
Accessing the ClassLoader of a Class
loadClass() Method - Loading Classes Explicitly
getSystemResource() Method - Finding Files
Class Loading Problem - JAR Hell
ClassChecker.java - Reports Class Loader
ClassChecker.java - Reports Class Locations
"superclass access check failed" Class Load Error
Class Loading Followed by Class Initialization
Class Class - Class Reflections
JVM Stack, Frame and Stack Overflow
Thread Testing Program and Result
CPU Impact of Multi-Thread Applications
I/O Impact of Multi-Thread Applications
Micro Benchmark Runner and JVM Options
Micro Benchmark Tests on "int" Operations
Micro Benchmark Tests on "long" Operations
Micro Benchmark Tests in JIT Compilation Mode
Micro Benchmark Tests on "float" and "double" Operations