- Java Virtual Machine Tutorial
- JVM - Home
- JVM - Introduction
- JVM - Architecture
- JVM - Class Loader
- JVM - Runtime Data Areas
- JVM - The JIT Compiler
- JVM - Compilation Levels
- JVM - 32b vs. 64b
- JVM - JIT Optimisations
- JVM - Garbage Collection
- JVM - Generational GCs
- JVM - Tuning the GC
- JVM - Memory Leak in Java
- Java Virtual Machine Resources
- JVM - Quick Guide
- JVM - Useful Resources
- JVM - Discussion
Java 虚拟机 - 类加载器
JVM 以动态方式管理类和接口的加载、链接和初始化过程。在加载过程中,JVM 会找到类的二进制表示形式并创建它。
在链接过程中,加载的类被组合到JVM的运行时状态,以便它们可以在初始化阶段执行。JVM基本上使用存储在运行时常量池中的符号表来进行链接过程。初始化包括实际执行链接的类。
装载机的类型
BootStrap类加载器位于类加载器层次结构的顶部。它加载 JRE 的lib目录中的标准 JDK 类。
扩展类加载器位于类加载器层次结构的中间,是引导类加载器的直接子级,并加载 JRE 的 lib\ext 目录中的类。
应用程序类加载器位于类加载器层次结构的底部,并且是应用程序类加载器的直接子级。它加载CLASSPATH ENV变量指定的 jar 和类。
链接
链接过程包括以下三个步骤 -
验证- 这是由字节码验证程序完成的,以确保生成的 .class 文件(字节码)有效。如果不是,则会抛出错误并且链接过程停止。
准备- 内存分配给类的所有静态变量,并使用默认值初始化它们。
解决方案- 所有符号内存引用都替换为原始引用。为了实现这一点,需要使用类方法区的运行时常量内存中的符号表。
初始化
这是类加载过程的最后阶段。静态变量被赋予原始值并执行静态块。