CS-Notes 学习笔记
Java 后端 · Java 虚拟机

类加载的过程是怎样的?

先自己想一想,再看参考要点

参考要点

  • 加载:按全限定名取得字节流,转换为方法区的运行时结构,生成 Class 对象
  • 验证字节流符合规范、不危害虚拟机
  • 准备:为类变量分配内存并设为零值(基本类型或 String、用常量表达式初始化的 static final 常量不经 \<clinit>() 直接取 ConstantValue 的值,《深入理解 Java 虚拟机》把这一步归在准备阶段,JVMS SE 21 写在初始化过程中)
  • 解析:把常量池中的符号引用替换为直接引用
  • 初始化:执行 \<clinit>(),即类变量赋值和静态语句块,父类先于子类,多线程下只有一个线程执行
在学习站中自测这道题看这道题所在的一天

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。