现在的位置: 首页 > 综合 > 正文

JVM学习-ClassLoader

2013年03月27日 ⁄ 综合 ⁄ 共 727字 ⁄ 字号 评论关闭

1.ClassLoader是什么

java中的类编译以后都是以字节码.class的方式保存的,一个java类要执行,必须由java虚拟机将这个字节码文件加载到内存中,ClassLoader就是负责装载字节码类的。

2.ClassLoader的装载顺序

  加载:查找并加载类的二进制数据(.class字节码文件)

  连接:

         a.验证:确保加载类的正确性

         b.准备:为类的静态变量分配内存,并赋予默认值

         c.解析:为类中的符号引用转化为直接引用

  初始化:为类的静态变量赋予正确的初始值

3.java对类的使用形式分为主动形式和被动形式

  主动形式:所有java虚拟机实现,必须在每个类或接口被首次使用的时候才被加载进来,分为以下6中形式

  a.创建类的实例  new Test();

  b.访问某个类或接口的静态变量或为其赋值 Test.a = 123;  int b = Test.a;

  c.调用类的静态方法 Test.run();

  d.反射 Class.forName

  e.初始化一类的子类

  f.java虚拟机启动时被标明启动类的类java Test

4.ClassLoader加载.class的方式

  a.从本地系统中加载

  b.从网络文件中加载

  c.从zip,jar归档文件中加载

  d.从专有数据库中加载.calss文件(不常见)

  e.将java源文件动态编译成.class文件

5.classLoader的分类

  java虚拟机自带的类加载器

  a.根类加载器BootStrap c++实现

  b.扩展类加载器Extension java实现

  c.系统类加载器System java实现

  用户自定义类加载器

  a.java.lang.ClassLoader的子类

  b.用户定制的类加载器

【上篇】
【下篇】

抱歉!评论已关闭.