jdk--ClassLoader
来源:互联网 发布:微屏软件 编辑:程序博客网 时间:2024/05/18 22:50
ClassLoader是用来将java字节码加载到java虚拟机中。
java.lnag.ClassLoader
分为系统提供的classloader和开发人员提供的
其中:bootstrap class loader 加载java核心库,不继承classloader,extensions class loader加载java扩展库,systemn class loader 根据classpath加载,一般java应用类都是它加载的,可以通过,ClassLoader.getSystemClassLoader()得到
开发的类加载器的父类是加载该类加载器的类加载器。
还有另外一种类加载器:线程上下文类加载器
contextClassLoader是在jdk2后引入的,使用getContextClassLoader setContextClassLoader设置和获得类加载器,线程集成父线程的加载器,最开始使用的系统类加载器。
为什么会有这种类加载器?之前双亲委派模式不能解决所有类加载的问题。
java提供很多spi供外部开发者实现,而这些实现会通过依赖jar包方式引入进来,并可以通过classpath找到。问题在于:spi接口是java核心库的一部分,有boot classloader加载,而spi的实现一般是system classloader加载,boot classloader无法找到实现类的,同时system classloader也没有机会加载spi接口。而线程上下文类加载器默认是system context classloader(不是 system classloader),所有类都是用这个classloader进行加载。
另外一种Class.forName常用在加载数据库驱动,没有提供额外的classloader只是调用者。
详细介绍:
https://www.ibm.com/developerworks/cn/java/j-lo-classloader/
java.lnag.ClassLoader
分为系统提供的classloader和开发人员提供的
其中:bootstrap class loader 加载java核心库,不继承classloader,extensions class loader加载java扩展库,systemn class loader 根据classpath加载,一般java应用类都是它加载的,可以通过,ClassLoader.getSystemClassLoader()得到
开发的类加载器的父类是加载该类加载器的类加载器。
还有另外一种类加载器:线程上下文类加载器
contextClassLoader是在jdk2后引入的,使用getContextClassLoader setContextClassLoader设置和获得类加载器,线程集成父线程的加载器,最开始使用的系统类加载器。
为什么会有这种类加载器?之前双亲委派模式不能解决所有类加载的问题。
java提供很多spi供外部开发者实现,而这些实现会通过依赖jar包方式引入进来,并可以通过classpath找到。问题在于:spi接口是java核心库的一部分,有boot classloader加载,而spi的实现一般是system classloader加载,boot classloader无法找到实现类的,同时system classloader也没有机会加载spi接口。而线程上下文类加载器默认是system context classloader(不是 system classloader),所有类都是用这个classloader进行加载。
另外一种Class.forName常用在加载数据库驱动,没有提供额外的classloader只是调用者。
详细介绍:
https://www.ibm.com/developerworks/cn/java/j-lo-classloader/
阅读全文
0 0
- jdk--ClassLoader
- jdk 内置classloader
- JDK源码中ClassLoader的浅析
- classLoader
- classloader
- ClassLoader
- ClassLoader
- ClassLoader
- classloader
- ClassLoader
- ClassLoader
- classloader
- ClassLoader
- classloader
- classloader
- classloader
- ClassLoader
- ClassLoader
- 我解决了net framework 4安装失败,提示找不到指定文件的问题
- 微图App中如何切换在线地图
- SSL证书申请
- 恨铁不成钢 苹果Siri为何敌不过其它智能助理?
- 同时使用@IdClass @ManyToOne碰到的一个问题
- jdk--ClassLoader
- Android 8.0 启动ServiceManager
- 算法——递归算法
- resteasy 数据校验之Hibernate validation 国际化问题
- java.net.BindException: Address already in use: bind异常处理方法
- php作业01
- opencart 2.3全面伪静态
- 这里简单介绍一个自己写的检测某个进程是否存在的bash小脚本
- 深度学习和自然语言处理的应用和脉络1-基础