关于java:JVM二类加载机制

38次阅读

共计 765 个字符,预计需要花费 2 分钟才能阅读完成。

一、整加载过程:


1.1、Loading 装载

  1. 先找到 classw 文件 —> 字节流 —> 类加载器 ClassLoader

测试:

public static void main(String[] args) {System.out.println(new Student().getClass().getClassLoader());
    System.out.println(new Student().getClass().getClassLoader().getParent());
    System.out.println(new Student().getClass().getClassLoader().getParent().getParent());
    System.out.println(new String().getClass().getClassLoader());
}

sun.misc.Launcher$AppClassLoader@18b4aac2
sun.misc.Launcher$ExtClassLoader@10f87f48
null
null

重点:双亲委派准则

  1. 字节流 —> 静态数据构造 —> 办法区(供所有 Java 虚拟机栈应用)
  2. 字节流 —> class 对象 —> 堆(供所有 Java 虚拟机栈应用)

1.2、Linking 筹备

  1. Verification 验证
    验证数据的准确性。说白了就是看你文件对不对,例:文件格式、元数据、字节码、符号援用
  2. Preparation 筹备
    为类的动态变量分配内存,并赋值为以后类型默认值;
  3. Resolution 解析
    将类的符号援用(存在常量池)变成间接援用;

    这在 class 文件汇总只是示意改数据是什么类型,就如一种标识、一种符号,在这个过程中要将这些符号分配内存

1.3、Initiating 初始化

为类的动态变量真正的初始化值

正文完
 0