首页 > 其他分享 >类加载的过程

类加载的过程

时间:2023-03-16 10:59:28浏览次数:25  
标签:初始化 变量 虚拟机 String 引用 过程 加载

 

 

 

 1、加载

  •通过一个类的全限定名来获取定义此类的二进制字节流         ---------->通过包名+类名,获取这个类,准备用流进行传输

  •将这个字节流所代表的静态存储结构转化为运行时数据结构  ---------->将这个类加载到内存中

  •在内存中生成一个代表这个类的java.lang.Class对象             ----------->加载完毕创建一个class对象

2、链接

  a、验证:链接阶段的第一步,这一阶段为了确定class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身安全。

        简单理解为看看class文件中的信息是否符虚拟机规范,有没有安全隐患;

  b、准备:为类的类变量(被static修饰的静态变量)分配内存,并设置默认初始化值,可以理解为初始化静态变量;

  c、解析:将类的二进制数据流中的符号引用替换为直接引用,类加载时类中成员变量的数据类型为引用数据类型,

             此时这个引用类型还不知道来自哪里,所以此时用符号替代这个引用类型(比如String name替代为*** name),

        那么解析的时候,就会去找这个String引用类型在哪里,并且会把临时符合变成String的引用,将找到后的地址值赋值给这个引用类型;

3、初始化

  •根据程序员通过程序制定的主观计划去初始化类变量和其它资源,就是静态变量赋值及初始化其它资源

标签:初始化,变量,虚拟机,String,引用,过程,加载
From: https://www.cnblogs.com/weiduaini/p/17221457.html

相关文章