JAVA类加载机制

类加载机制是指class文件加载到JVM,并形成class对象的机制,之后应用就可对class对象进行实例化并调用,类加载机制可在运行时动态加载外部的类、远程网络下载过来的class文件等。除了该动态化优点外,还可通过JVM的类加载机制来达到隔离的效果,如Application Server中通常要避免两个应用的类相互干扰。

JVM类加载过程可以分为3个步骤:装载(Load)链接(Link)初始化(Initialize)。其中初始化过程不是加载类时必须触发的,但最迟必须在初次主动使用对象前执行,其动作为给静态变量赋值、调用<clinit>()等。

     1、装载:负责找到二进制字节码并加载到JVM,JVM通过类的全限定名及类加载器完成类的加载。

     2、链接:负责对二进制字节码的格式进行校验、初始化装载类中的静态变量及解析类中调用的接口、类。

             验证:确保被加载类的正确性; 

             准备:为类的静态变量分配内存,并将其初始化为默认值;

             解析:把类中的符号引用转换为直接引用;

     3、初始化:初始化过程即执行类中的静态初始化代码、构造器代码以及静态属性的初始化,在以下四种情况下初始化过程会被触发执行。

         a:调用了new;

         b:反射调用了类中的方法;

         c:子类调用了初始化;

         d:JVM启动过程中指定的初始化类;



JVM的类加载通过ClassLoad及其子类完成,分为Bootstrap ClassLoader、Extension ClassLoader、System ClassLoader 及User-Defined ClassLoader。这四种ClassLoader的关系如图。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值