公司动态

JVM类加载机制学习

📅 2026/9/1 11:21:18
JVM类加载机制学习
加载过程加载、验证 、准备、解析、初始化准备给类的静态变量分配内存并赋予默认值如int的值默认值为0布尔的就是false,对象就是null;解析将符号引用替换为直接引用该阶段会把一些静态方法符号引用比如main()方法替换为指向数据所存内存的指针或句柄等直接引用这是所谓的静态链接过程类加载期间完成动态链接是在程序运行期间完成的将符号引用替换为直接引用。初始化对类的静态变量初始化为指定的值执行静态代码块类被加载到方法区中后主要包含运行时常量池、类型信息、字段信息、方法信息、类加载器的引用、对应class实例的引用等信息。类加载器的引用这个类到类加载器实例的引用对应class实例的引用类加载器在加载类信息到方法区中后会创建一个对应的Class类型的对象实例放到堆Heap中作为开发人员访问方法去中类定义的入口和切入点主类在运行过程中如果使用到其他类会逐步加载这些类jar包或war包中的类不是一次性全部加载的是使用到时才加载。懒加载publicclassTestDynamicLoad{static{System.out.println(*************load TestDynamicLoad************);}publicstaticvoidmain(String[]args){newA();System.out.println(*************load test************);Bbnull;//B不会加载除非这里执行 new B()}}classA{static{System.out.println(*************load A************);}publicA(){System.out.println(*************initial A************);}}classB{static{System.out.println(*************load B************);}publicB(){System.out.println(*************initial B************);}}