JVM Tutorials - Herong's Tutorial Examples
∟ClassLoader Class - Class Loaders
This chapter provides tutorial notes and example codes on java.lang.ClassLoader class. Topics include JRE class loaders: Bootstrap, Extensions and System Class Loaders; using getSystemClassLoader().loadClass() to load classes explicitly; using 'verbose:class' option to see when and where classes are loaded.
What Is Class Loader
What Is java.lang.ClassLoader Class
Accessing the ClassLoader of a Class
JVM "-verbose:class" Option
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
Takeaways:
- Class loaders are part of JRE that loads Java classes into JVM.
- There are 3 built-in class loaders: Bootstrap, Extensions, and System class loaders.
- Bootstrap class loader loads system classes in JAR files from <JAVA_HOME>/lib folder.
- Extensions class loader loads extensions classes in JAR files from <JAVA_HOME>/lib/ext folder.
- System class loader loads application classes from "classpath" entries.
- java.lang.ClassLoader is abstract class that represents class loaders in JVM.
- Most of the time, classes are loaded into JVM implicitly on an on-demand basis.
- Calling loadClass() method on a class loader loads the given class into JVM explicitly.
- Calling getClassLoader() method on a loaded class returns its class loader.
- ClassLoader.getSystemResource() method can be used to find the first location of a given class file, or any other file,
using the same file search logic used by class loaders.
- ClassCheck.java is a simple tool to load a given class and report the class loader and class locations.
- After a class is loaded, the JVM will initialize the class immediately.
Table of Contents
About This Book
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
Class Class - Class Reflections
JVM Runtime Data Areas
JVM Stack, Frame and Stack Overflow
Thread Testing Program and Result
CPU Impact of Multi-Thread Applications
I/O Impact of Multi-Thread Applications
CDS (Class Data Sharing)
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
OpenJ9 by Eclipse Foundation
JRockit JVM 28.2.7 by Oracle Corporation
Archived Tutorials
References
Full Version in PDF/EPUB