A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pengyu1801 中级黑马   /  2014-8-14 23:46  /  1070 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Java虚拟机中可以安装多个类加载器,系统默认有三个主要的类加载器,每个类加载器负责加载特定位置的类:

BootStrap,ExtClassLoader,AppClassLoader。


类加载器也是Java类,因此Java类的类加载器本身也要被其他的类加载器加载,显然必须有第一个类加载器不是Java

类,它就是BootStrap类加载器。

代码示例:

package com.itheima.day02;

public class ClassLoaderTest {

public static void main(String[] args) {

System.out.println(ClassLoaderTest.class.getClassLoader().

getClass().getName());

System.out.println(System.class.getClassLoader());

}
}

由上面的示例可以看到ClassLoaderTest类是由AppClassLoader类加载器加载的。

System类是由BootStrap类加载器加载的。




注意:

JVM内核启动的时候,BootStrap就已经被加载了,它是内嵌在JVM内核中的,是用C++语言编写的二进制代

码,因此不需要其他类加载器加载。

Java虚拟机中的所有类装载器采用了具有父子关系的树形结构进行组织。




代码示例:

package com.itheima.day02;

public class ClassLoaderTest {

public static void main(String[] args) {

ClassLoader loader = ClassLoaderTest.class.getClassLoader();

while(loader !=null){

System.out.println(loader.getClass().getName());

loader = loader.getParent();

}

System.out.println(loader);

}
}


由上面的示例可以看到AppClassLoader类加载器的父级别类加载器是ExtClassLoader类加载器,

ExtClassLoader类加载器的父级别类加载器是BootStrap类加载器。

在实例化每个类加载器对象时,需要为其指定一个父级类加载器对象或者默认采用系统类加载器为其父级类加载。

2 个回复

倒序浏览
M单色调 来自手机 中级黑马 2014-8-15 02:16:02
沙发
这不就是老师讲的吗?
回复 使用道具 举报
M单色调 发表于 2014-8-15 02:16
这不就是老师讲的吗?

                    是的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马