1、加载源代码。父类->基类
2、分配静态成员变量并进行默认初始化;调用静态初始化代码块进行显式初始化。基类->父类
3、分配成员变量并进行默认初始化;调用构造方法进行显式初始化。基类->父类
注:第1和2步骤加载类,第3步骤加载对象;加载对象时,查看对应的类是否已加载,是则加载对象,否则,先加载类,再加载对象。
class Base {
protected static String str;
protected static void printStr() {
System.out.println(str);
}
static {
printStr();
str = "[static block]:Base!";
}
public Base() {
printStr();
str = "[construct block]:Base!";
}
}
public class Derived extends Base {
static {
printStr();
str = "[static block]:Derived!";
}
public Derived() {
printStr();
str = "[construct block]:Derived!";
}
public static void main(String[] args) {
new Derived();
printStr();
}
}
分享到:
相关推荐
类加载器之间遵循委托机制,即下级类加载器先请求上级类加载器加载类,如果上级无法加载,则再由下级尝试加载。 3. **类的命名空间及运行时包**:类的命名空间是指在JVM中每个类都有唯一的标识符,防止命名冲突。...
类加载过程包括通过一个类的全限定名来获取定义此类的二进制字节流,将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构,在内存中生成一个代表整个类的java.lang.Class对象,作为方法区这个类的各种...
JVM加载class文件的原理机制是Java中的核心机制之一,由于Java中的所有类必须被装载到JVM中才能运行,这个装载工作是由JVM中的类装载器完成的。类装载器所做的工作实质是把类文件从硬盘读取到内存中。 类加载机制 ...
- 解析:将符号引用转换为直接引用,如将类名转换为实际的类对象引用。 3. 初始化:执行类的初始化方法(),它是由编译器自动生成的,用于执行静态字段的初始化和静态块的执行。 三、双亲委派模型 为了保证类加载...
JVM加载class文件的原理机制 JVM加载class文件的原理机制是Java虚拟机中一个非常重要的组件,负责将class文件加载到内存中,以便Java程序的执行。下面是JVM加载class文件的原理机制的详细介绍: 类加载的原理 在...
2. **JVM加载类对象**:当JVM加载一个类时,会创建一个`Class`对象代表这个类。反射操作就是基于这个`Class`对象进行的。 3. **反射支持**:JVM为反射操作提供了必要的支持,如安全检查、动态类型转换等。 #### 五...
- 压缩文件加载:从`.jar`、`.zip`等压缩文件中查找并加载类,自动解析`.jar`文件中的`.class`文件。 - 动态编译:从`.java`源代码文件编译成`.class`文件,然后加载。 类加载器的层次结构包括引导类加载器...
2. 方法区(Method Area):存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。在HotSpot虚拟机中,这部分区域又被称为“永久代”(PermGen)。 3. 虚拟机栈(Java Stack):每个线程...
2. JVM加载类对象:JVM通过类加载器加载`.class`文件,解析元数据生成`Class`对象。 3. JVM对反射的支持:JVM提供了相应的API来支持反射操作,如`invoke`指令用于调用方法,`getfield`和`putfield`用于访问字段。 ...
类加载机制是Java运行时环境的核心功能之一,它负责将.class文件加载到JVM内存中,转换为可以执行的类对象。这个过程分为三个主要阶段:加载、链接和初始化。 1. **加载**: 类加载的第一步是找到类的字节码文件,...
Java虚拟机(JVM)的类...总结来说,JVM类加载机制保证了Java程序的稳定性和安全性,通过一系列步骤将类的定义转换为运行时可用的对象。了解这个机制对于优化代码性能、解决内存问题以及深入理解Java运行原理至关重要。
Java虚拟机(JVM)的类加载器子系统是Java运行时环境的一个重要组成部分,它负责将.class文件加载到内存中,并生成对应的Java类对象。这一过程涵盖了从文件系统或网络获取.class文件、验证类文件的正确性、准备类...
Java的JVM(Java Virtual Machine)类装载器是Java运行时系统的重要组成部分,负责在程序运行期间查找并加载类的二进制数据。理解类装载器的工作原理对于优化Java应用性能和实现动态加载类至关重要。 装载过程包括...
当类被加载时,JVM会在内存的运行时数据区的方法区内存储类的信息,并在堆中创建一个`java.lang.Class`对象来封装这些数据结构,体现了Java的万物皆对象原则。 接下来是**连接**阶段,它包含了三个小步骤: 1. **...
在 Jvm 对象内存分配中,首先需要对类进行加载检查。如果类已经被加载过,则直接使用已加载的类;否则,需要执行类加载过程。类加载过程包括解析和初始化两个步骤。在类加载完成后,Jvm 会为对象分配内存。 内存...
### 深入Java虚拟机JVM类加载学习笔记 #### 一、Classloader机制解析 在Java虚拟机(JVM)中,类加载器(ClassLoader)是负责将类的`.class`文件加载到内存中的重要组件。理解类加载器的工作原理对于深入掌握JVM以及...
4. **解析(Resolution)**:将符号引用转换为直接引用,例如将类名转换为实际的类对象引用。 5. **初始化(Initialization)**:执行类的初始化方法(`<clinit>`),如果类有静态变量或静态初始化块,就会在这里...
当类加载器接收到加载类的请求时,首先会委托给父类加载器,只有当父类加载器无法加载时,当前加载器才会尝试自己加载。这样可以避免类的重复加载,也保证了系统类(如`java.lang.String`)的唯一性。 以类加载器...
JVM的垃圾收集机制可以回收不再使用的对象,但类加载器却难以卸载。这是因为类加载器与类的关系是“父子关系”,而非“拥有关系”,只有当类加载器被回收,它所加载的类才会一同卸载。 6. **类加载器优化** 优化...