深入类加载器-类加载器作用,类缓存、类加载器的层次结构、ClassLoader类介绍、代理模式之双亲委派机制
来源:互联网 发布:广州多迪网络要交钱吗 编辑:程序博客网 时间:2024/05/22 10:41
1、类加载器的作用
类加载器的作用是将class字节码文件加载到内存中,并将这些静态数据转化为方法区中的运行时数据结构,同时在堆中生成代表这个类的java.lang.Class对象,作为访问方法区中数据的入口。
2、类缓存
标准的Java SE类加载器可以按要求查找指定的类,但是一旦某个类被加载到指定的类加载器中,它将维持一段时间,不过,JVM垃圾回收机制可以回收这些Class对象,简单的说,类在被回收前,只被加载一次
3、类加载器的层次结构
*注意:
a、只有引导类加载器没有继承java.lang.ClassLoader
b、只有引导类加载器是用C++写的,其他的类加载都是用java写的
c、自定义类的加载器的父类是应用程序类加载器,应用程序类加载器的父类是拓展类类加载,拓展类类加载的父类是引导类加载器,引导类加载器没有父类
d、注意这里所说的父类并不是继承的关系,内部的采用的组合的方式实现的
————————————————————————————
1. 引导类加载器(bootstrap class loader)
作用:
1、加载Java的核心库(JAVA_HOME/jre/lib/rt.jar)或sun.boot.class.path路径下的内容
2、加载扩展类和应用程序类加载器,并指定他们的父类
3、它是由原生程序C++写的,并不继承java.lang.Classloader
通过程序获取sun.boot.class.path路径下的内容
@org.junit.Test public void test() { System.out.println(System.getProperty("sun.boot.class.path")); }
程序执行结果:
2、扩展类加载器(Extensions class loader)
1、用来加载java的扩展库(JAVA_HOME/jre/ext/*.jar)或java.ext.dirs路径下的内容,Java虚拟机会提供一个扩展库目录,该类加载器在这里查找并加载java类
2、由sun.misc.Launcher$ExtClassLoader实现
3、应用程序类加载器(application class loader)
1、根据Java应用的类路径来加载类,一般来说Java应用的类都是由它来加载的
2、由sun.misc.Launcher$AppClassLoader实现
4、自定义类加载器
1、开发人员可以通过继承java.lang.ClassLoader类来定义自己的类加载器已满足一些特殊的需求
4、ClassLoader类介绍
作用
加载字节码文件并生成对应的java.lang.Class对象
加载Java应用所需要的资源,如图像和配置文件
相关方法
*注意
- 上面方法参数中的name指定的是类的二进制名,需要注意的是内部类的表示,com.maple.example$Test表示内部类Test
5、代理机制之双亲委派机制
解释:
某个类加载执行类加载请求时,先将该请求交给父类,父类再交给父类的父类,知道最高级父类,到达最高级父类时,他会判断我能不能加载这个类,如果能,则加载成功返回,如果不能,则交给他的一级子类重复以上的操作,知道这个类最后被成功加载
作用:
保证了Java核心库的类型安全,这种机制也是java很重要的安全屏障
- 深入类加载器-类加载器作用,类缓存、类加载器的层次结构、ClassLoader类介绍、代理模式之双亲委派机制
- 类加载器和双亲委派机制
- 类加载器、双亲委派机制
- 类加载器的双亲委派及打破双亲委派
- jvm类加载器双亲委派模式
- 深入理解JVM07--虚拟机类加载机制--类加载器、双亲委派模型
- 深入理解Java类加载机制(2)--类加载器及双亲委派模型
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 深入JVM之类加载、类加载器、双亲委派机制与常见问题
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 双亲委派模型(类加载器)
- 类加载器与双亲委派模型
- 双亲委派模型--类加载器
- web信息搜索之搜索引擎篇
- bzoj 3173: [Tjoi2013]最长上升子序列(离线二分+树状数组)
- Java Web过滤器笔记
- NDK 开发随笔(一)
- js实现星级评分(第二种实现方式)
- 深入类加载器-类加载器作用,类缓存、类加载器的层次结构、ClassLoader类介绍、代理模式之双亲委派机制
- [Haskell] CodeWars|Build a pile of Cubes
- 蓝桥杯 算法提高 排列式
- Servlet源码解析初步
- NCPC 2016 Fleecing the Raffle(推导)
- 从GitHub上下载程序到Android Studio
- 如何查看activiti api的sql语句
- HTML解析库--Jsoup的基本使用
- linux网易云音乐安装失败需要×××依赖