千锋教育-做有情怀、有良心、有品质的职业教育机构
当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。
如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。
加载:将类的class文件读入到内存,创建一个类对象的过程,加载的方法有三种:
new的方式加载、调用类反射的方法加载、调用类加载器的加载方法加载,其中使用类加载器加载的对象不会执行其中的静态语句块。
java采用双亲委派机制来使用加载器,双亲委派就是先让父类加载器加载类,父类不行才动用子类加载器加载,这种方式可以节省子类加载器的载入时间。
类加载完成后,java会对类进行验证,检验类的内部结构是否正确,诸如数组越界这类错误就是在这里发生的,这里也是整个加载过程最费时的部分。
验证完成后,最后就是真正的初始化,java会先初始化静态部分,再初始化实例部分,在这基础上java又会优先初始化父类对象,最后才是子类对象。 整个类的加载到此就结束了。
上一篇
Hive MapJoin相关推荐