码迷,mamicode.com
首页 > 编程语言 > 详细

Java类加载笔记(1)

时间:2015-01-11 12:24:18      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:java   classloader   类加载   反射   类的加载   

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


                                                          技术分享                                      


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     情绪控_ 

Java类加载笔记(1)

标签:java   classloader   类加载   反射   类的加载   

原文地址:http://blog.csdn.net/hai_qing_xu_kong/article/details/42609883

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!