在地铁上看了会书,看到了JVM实现类加载的原理,寻思记录一下。
java程序运行在JVM之上,jvm的运行状况对java程序来说有很重要的影响。JVM的结构大概是这样的。
JVM负责将class文件加载并执行,也就是说我们平时写的java代码,在sun的JDK的编译下,输出class文件,JVM将输出的class文件进行加载执行。JVM的类加载机制分为三个步骤,装载,连接和初始化。
1 装载
JVM通过类的全类名以及类加载器ClassLoader完成类的加载。
2 链接
类加载完成之后,通过链接过程负责对二进制字节码的格式进行校验,初始化装载类中的静态变量以及解析类中调用的接口,类。
完成校验后,JVM初始化类中的静态变量,并将其值赋为默认值。最后对类中的所有属性方法进行验证,以确保其要调用的属性 方法存在,以及具备相应的权限,比如public private等等。
3 初始化
初始化过程即执行类中的静态初始化代码(static{ ... }),构造器代码以及静态属性的初始化。
初始化过程有:new的调用,反射调用,子类初始化调用,JVM启动过程中指定的初始化类
这是JVM加载类的过程。。。
参考资料是《分布式Java应用:基础与实践》