Java类加载笔记(1)

当一个程序调用某个类,这个类还没有被加载到内存中时,我们的系统会通过以下三个步骤来对该类进行初始化:


                                                                                                


1、类的加载

类加载指的是将类的class文件读入内存中,并给它创建一个java.lang.Class对象。类的加载时由类加载器完成的,我们可以通过类加载器来加载以下来源的二进制数据:

--从本地文件系统加载class文件。

--从JAR包中加载class文件。

--从网络中加载class文件。

--将一个Java源文件动态编译,并进行加载。


2、类的连接

当类被加载后,系统就会生成一个Class对象,接着将二进制数据合并到JRE中。类连接又被分为以下几步:

--检验被加载的类是否有正确的内部结构,并且和其他类协调一致。

--为类的静态Field分配内存,并设置默认值。

--将类的二进制数据中的符号引用替换成直接引用。



3、类的初始化

类的初始化主要对静态Filed进行初始化,指定静态初始化可以通过声明静态Field时指定初始化值、可以通过静态初始化块为静态Field指定初始化值。

类的初始化主要按照以下步骤:

--如果这个类还没有被加载和连接,那么先加载后连接这个类。

--在执行第一个步骤时,应该去检查这个类的直接父类是否被初始化,如果没有初始化,就去先初始化它的直接父类(当然在初始化直接父类时,这个直接父类又有直接父类,还要去检查它的直接父类,以此类推)

--如果类中有初始化语句,那么依次去执行这些初始化语句。




转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/42609883     情绪控_ 

©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:上身试试 返回首页