Java类加载器概述
Java类加载器概述
Java 中的类加载器大致可以分成两类,一类是系统提供的,另外一类则是由Java 应用开发人员编写的。
系统提供的类加载器
引导类加载器
它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 java.lang.ClassLoader。主要负责jdk_home/lib目录下的核心api 或 -Xbootclasspath 选项指定的jar包装入工作(其中的jdk_home是指配置jdk环境变量是java_home的配置路径,一般是jdk/jre所在目录)。
扩展类加载器
它用来加载 Java 的扩展库。Java虚拟机的实现会提供一个扩展库目录,扩展类加载器在此目录里面查找并加载 Java 类,主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作。
系统类加载器
它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ClassLoader.getSystemClassLoader()来获取它。主要负责CLASSPATH/-Djava.class.path所指的目录下的类与jar包装入工作。
开发人员编写的加载器
除了系统提供的类加载器以外,开发人员可以通过继承java.lang.ClassLoader类的方式实现自己的类加载器,从而进行动态加载class文件,以满足一些特殊的需求,这体现java动态实时类装入特性。
除了引导类加载器之外,所有的类加载器都有一个父类加载器,通过getParent()方法可以得到。对于系统提供的类加载器来说,系统类加载器的父类加载器是扩展类加载器,而扩展类加载器的父类加载器是引导类加载器;对于开发人员编写的类加载器来说,其父类加载器是加载此类加载器 Java 类的类加载器。因为类加载器 Java 类如同其它的 Java 类一样,也是要由类加载器来加载的。一般来说,开发人员编写的类加载器的父类加载器是系统类加载器。
最新文章
- PHP将富文本编辑后的内容,去除样式图片等只保留txt文本内容
- Python全栈--9 __import__ 反射和面向对象基础 self 封装 继承(多继承的顺序) 多态
- mysql 语句解释执行顺序
- iOS UITableView点击按钮滚到顶部
- SVN 首次用TortoiseSVN Checkout 提示Unexpected HTTP status 405
- 反向代理代理百度、google
- ffmpeg windows 雪花声解决方法
- java--静态的应用(工具类)
- 团队作业4——第一次项目冲刺(Alpha版本)4.27
- 浅谈JavaScript的面向对象程序设计(四)
- Web服务,XFire的一个例子
- scrapy获取页面信息
- 用turtle库实现汉诺塔问题~~~~~
- NIO/BIO
- Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口”
- centos 7 安装redis 3.2.1
- 正则表达式 &; re
- flume使用之httpSource
- 上下文相关的GMM-HMM声学模型
- Android之找回打包key密码的方法