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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© littlefoxtail 中级黑马   /  2013-5-26 14:25  /  1272 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 littlefoxtail 于 2013-5-26 20:11 编辑

java虚拟机加载类的时候,到底用哪个加载器? 这个东西弄的好头疼啊,有大神讲解下么

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

2 个回复

倒序浏览
当jvm启动时,会形成由3个类加载器组成的初始类加载器层次结构:

1,Bootstrap ClassLoader:根类加载器
2,Extension ClassLoader:扩展类加载器
3,System ClassLoader:系统类加载器

其中,Bootstrap ClassLoader被称为引导类加载器,他负责加载java的核心类。
Extension ClassLoader负责加载jre的扩展目录中jar包的类,通过这种方式可以扩展核心类以外的新功能。
System ClassLoader被称为系统加载器,它负责在jvm启动时加载来自java命令的-classpath选项,java.class.path系统属性,或CLASSPATH环境变量所指定的jar包和类路径。

大概就是这样子的吧。。。我查的书{:soso_e113:}

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
类加载器分为:引导类加载器,扩展类加载器和系统类加载器,引导类加载器加载的是java最核心的类库,扩展类加载器加载的是JVM提供的扩展类库,系统类加载器则是我们比较熟知的需要按路径来加载的类,其中引导类加载器是扩展类加载器的父类,扩展类加载器是系统类加载器的父类,当JVM加载类时是按照这个过程进行的:A类加载器在加载一个.class字节码时,它会先把这个字节码交给它的父类B加载器去加载,B类加载器在加载此字节码时会先将字节码交给它的父类去加载,如此类推(如果父类不能加载,再返回给子类)。由此可知,当在加载某字节码时,首先启动加载的是系统类加载器,而正真完成字节码加载的则可能会它的父类加载器。由此也不难看出,决定启动加载字节码的加载器和最终加载成功字节码的加载器不一定相同。(这是我百度后的理解^^)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马