类加载机制

加载

加载就是一个读取Class文件,将其转化为某种静态数据结构存储在方法区内,并在堆中生成一个便于用户调用的java.lang.Class类型的对象的过程

连接:验证

对class静态结构进行语法和语义上的分析,保证其不会产生危害虚拟机的行为

连接:准备

会给该类型中定义的静态变量赋0值

java 复制代码
Class A {
  private int a = 1;
  static private int b; //b=0
  static {
    b = 1;
  }
}

连接:解析

将符号引用替换为直接引用

解释:

当一个Java类被编译成class之后,将其称为A,A引用了B,在其编译阶段的,其并不知道B是否被编译加载,所以A并不知道B的实际地址,此时A中使用字符串S来代表B的地址,S也就是符号引用

当A运行时,若A发生了类加载,到解析阶段发现B未被加载,此时B就触发类加载,会被加载到虚拟机中,此时A中B的符号引用就会被替换成B的实际地址,被称为直接引用。这样A就可以直接调用到B了

Java通过后期的绑定的方式来实现多态,而后期绑定的实现就是通过动态解析

初始化

初始化比较简单,也就是看

相关推荐
月夕·花晨1 小时前
Gateway-过滤器
java·分布式·spring·spring cloud·微服务·gateway·sentinel
hssfscv2 小时前
JAVA学习笔记——9道综合练习习题+二维数组
java·笔记·学习
人工干智能3 小时前
科普:Python 中,字典的“动态创建键”特性
开发语言·python
初听于你4 小时前
缓存技术揭秘
java·运维·服务器·开发语言·spring·缓存
小蒜学长5 小时前
springboot多功能智能手机阅读APP设计与实现(代码+数据库+LW)
java·spring boot·后端·智能手机
长路归期无望6 小时前
C语言小白实现多功能计算器的艰难历程
c语言·开发语言·数据结构·笔记·学习·算法
是大强7 小时前
stm32摇杆adc数据分析
开发语言
蓝莓味的口香糖8 小时前
【JS】什么是单例模式
开发语言·javascript·单例模式
zizisuo8 小时前
解决在使用Lombok时maven install 找不到符号的问题
java·数据库·maven
linux kernel8 小时前
第二十三讲:特殊类和类型转换
开发语言·c++