关于ClassLoader
来源:互联网 发布:如何计算矩阵一致性 编辑:程序博客网 时间:2024/06/06 04:51
1、基础知识
开发阶段定义的类经编译后生成Class文件(二进制),里面保存类的描述信息。JVM当且仅当需要用到某个类时才将其对应的Class文件加载到内存中,而且只会加载一次。类的加载通过类加载器实现。常用的类加载器有四种:
(1) BootStrap ClassLoader:称为启动类加载器,是Java类加载层次中最顶层的类加载器,负责加载JDK中的核心类库,位于JAVA_HOME/jre/lib目录下,如:rt.jar、resources.jar、charsets.jar等。不继承ClassLoader,底层由C++编写,内置于JVM中
(2) Extension ClassLoader:称为扩展类加载器,负责加载Java的扩展类库,默认加载JAVA_HOME/jre/lib/ext/目下的所有jar。继承ClassLoader
(3) App ClassLoader:称为系统类加载器,负责加载应用程序classpath目录下的所有jar和class文件。继承ClassLoader
(4) 自定义ClassLoader:继承ClassLoader,重写findClass方法
2、加载模型解读
(1)双亲委托模型
(2)源码分析类加载流程
3、实际使用
(1) 优先由最上层类加载器加载,基础的类比如String、Object等均由Bootstrap ClassLoader加载,通过这些类的对象获取的ClassLoader一般为null。注意ExtClassLoader.getParent返回的ClassLoader也为null
(2) 只加载一次,上层类加载器加载之后,下层不再重复加载,一个Class只会加载一次
(3) JVM如何唯一识别某个Class:所使用类加载器+full package name + className
(4) App ClassLoader(系统类加载器)加载Class并使用一般流程:根据类的全路径package name(*.java文件中import) + className 查找对应的Class文件,找到之后加载到内存中。该类所有实例对象的创建均来源于此Class。Class本身也是一个类,通过Class对象可以动态分析类的成员变量、属性、方法等,是反射技术的基础。
参考:http://blog.csdn.net/xyang81/article/details/7292380
http://blog.csdn.net/irelandken/article/details/7048817
- 关于ClassLoader
- 关于ClassLoader
- 关于ClassLoader
- 关于ClassLoader
- 关于ClassLoader
- 关于classloader
- 关于ClassLoader
- 关于 ClassLoader(转)
- 关于classloader热加载
- 关于ClassLoader的使用
- 关于ClassLoader的原理
- 关于ClassLoader的知识点记录
- 关于ClassLoader与动态扩展
- 关于Android的ClassLoader探索
- 关于java classloader一个题
- classLoader
- classloader
- ClassLoader
- 2. 线程安全性
- hive count(*) 获得0行数据
- Redis系列一
- 多年iOS开发经验总结(一)
- java-异常 报错
- 关于ClassLoader
- MySQL中的基本知识
- Java中MVC详解以及优缺点总结
- 算法证明题 8.9 HITTING SET
- Nginx学习——Nginx简单介绍和Linux环境下的安装
- 前情回顾#继承_多态_动态调用
- 【Linux】CRC校验
- Java基础API-lang包
- HTML笔记(HTML头部)