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 类一样,也是要由类加载器来加载的。一般来说,开发人员编写的类加载器的父类加载器是系统类加载器。

最新文章

  1. PHP将富文本编辑后的内容,去除样式图片等只保留txt文本内容
  2. Python全栈--9 __import__ 反射和面向对象基础 self 封装 继承(多继承的顺序) 多态
  3. mysql 语句解释执行顺序
  4. iOS UITableView点击按钮滚到顶部
  5. SVN 首次用TortoiseSVN Checkout 提示Unexpected HTTP status 405
  6. 反向代理代理百度、google
  7. ffmpeg windows 雪花声解决方法
  8. java--静态的应用(工具类)
  9. 团队作业4——第一次项目冲刺(Alpha版本)4.27
  10. 浅谈JavaScript的面向对象程序设计(四)
  11. Web服务,XFire的一个例子
  12. scrapy获取页面信息
  13. 用turtle库实现汉诺塔问题~~~~~
  14. NIO/BIO
  15. Windows 10文件夹Shirt+鼠标右键出现“在此处打开命令窗口”
  16. centos 7 安装redis 3.2.1
  17. 正则表达式 & re
  18. flume使用之httpSource
  19. 上下文相关的GMM-HMM声学模型
  20. Android之找回打包key密码的方法

热门文章

  1. Linux下用gdb 调试、查看代码堆栈
  2. 测试工具Wiremock介绍
  3. 在ubuntu18.04上部署项目时遇到的问题总结
  4. lambda与方法引用
  5. 改变this指向&闭包特性
  6. 关于python使用的那些事儿
  7. 从kratos分析breaker熔断器源码实现
  8. Golang入门学习(四):常用的函数汇总
  9. Linux详细安装流程(直接看图)
  10. Lua io.lines()