在我们科学技术与经济水平均高速发展的今天,掌握一门新兴技术对于每一个有志青年来说都是十分重要的。今天主要为大家详细介绍一下java的关键技术强化——类加载器,以及通过示意图展示它的结构。

首先为大家简述什么是类加载器。从它的名称我们就可以看出来,类加载器就是用来加载Class文件到JVM,以供程序使用的。java的类加载,都是通过类加载器完成的。

然后说一下怎么创建类加载器。当java运行class文件时,java运行程序会尝试找到JRE安装的所在目录,然后寻找jvm.dll(默认安装在bin\client目录中),紧

接着启动JVM并进行初始化的工作,之后产生Bootstrap Loader,Bootstrap Loader会加载Extended

Loader和AppClass Loader。Bootstrap Loader是Extended Loader的parent Loader。Extended Loader是AppClass

Loader的parent Loader。

再为大家介绍一下java内置的ClassLoader :

第一种是Bootstrap Loader(引导类加载器)。它的实现依赖于底层操作系统,由C编写而成,没有继承于ClassLoader类。根类加载器从系统属性sun.boot.class.path所指定的目录中加载类库。默认为jre目录下的lib目录下的class文件,该加载器没有父加载器。负责加载虚拟机的核心类库,如java.lang.*。Object类就是由根类加载器加载的。

第二种是Extended Loader(标准扩展类加载器)。它的父加载器为根类加载器。由java编写而成,是ClassLoader的子类。它从java.ext.dirs中加载类库,或者从JDK安装目录jre\lib\ext子目录下加载类库。如果把用户创建的jar文件放在该目录下,也会自动由扩展类加载器加载。

第三种是AppClass Loader(应用程序类路径类加载器)。它的父加载器为扩展类加载器。由java编写而成,是ClassLoader的子类,它从环境变量classpath或者系统属性java.class.path所指定的目录中加载类,是用户自定义的类加载器的默认父加载器。

接下来让我们了解一下类加载器工作原理。每个类加载器会先将加载类的任务交给其parent,如果parent找不到,再由自己负责加载。

所以在加载类时,会以Bootstrap Loader→Extended Loader→AppClass Loader的顺序来寻找类,如果找不到,就会丢出NoClassDefFoundError。

我们通过一张图片来展示类加载器树状组织结构:

最后说一下类的死亡。类也能被垃圾回收。类被回收的条件有两个:如果程序没有对Class对象保持明确的引用且堆中没有一个此类的对象。

上文主要为大家概述了java类加载器主要包括了哪些内容,以及通过树状结构示意图生动地为大家展示了出来。想要了解更多java基础,敬请关注奇Q工具网。

推荐阅读:

java的类加载器都有哪些_java类加载器包括哪些内容?树状结构示意图展示相关推荐

  1. Java树状图展示的实现

    Java树状图展示的实现 在项目中经常会遇到将数据以树状图的形式展现出来,如图: 有时候不仅要构建树结构,还要计算每个节点拥有的成员数量. 由于我们不能确定树的大小和层级就不能用常规的方法进行展示,我 ...

  2. 【java工具类】四级菜单如何实现树状结构展示JSON给前端

    前言: 主要是传给前端进行树状结构操作比较好,这样可以关联上下四级选择项,所以需要把表中的数据List转成一个树状结构. 1.数据库数据是静态的四级目录 数据是这样的四级目录,没有特别明确的id进行关 ...

  3. java 类加载的机制面试题_java 类加载机制 阿里面试题

    /** * 加载方法不等于执行方法,初始化变量则会赋值 * 类加载顺序应为 加载静态方法-初始化静态变量-执行静态代码块 * 实例化时 先加载非静态方法-实例化非静态变量-执行构造代码块-执行构造函数 ...

  4. java中所有类都是通过_Java中所有的类都是通过直接或间接地继承(   )类得到的...

    [填空题]三极管工作在放大状态时, 结正偏, 结反偏. [填空题]晶体三极管的输出特性可以分为 区, 区和 区;三极管工作在 区有电流放大作用,当三极管交替工作在 区和 区时有开关作用. [名词解释] ...

  5. java电商项目的项目描述_Java电商项目-6.实现门户首页数据展示_Redis数据缓存

    需求介绍 为了缩短用户看到首页信息的时间, 我们把首页显示的类目信息, 广告等数据放到Redis缓存中, 这样就不用通过耗时的数据库操作获取数据, 而是直接从Redis缓存中获取. 在开始之前先记录一 ...

  6. java 类加载器 解密_JAVA类加载器总结整理

    一.What(是什么?) 1.概念 Java类加载器是Java运行时环境的一部分,负责动态加载Java类到JVM的内存空间中.每个Java类必须由某个类加载器装入到内存中.每一个类加载器都有一个父类加 ...

  7. java引导类加载器_Java类加载器层次结构(一)

    类加载器有一种父/子关系.除了引导类加载器外,每个类加载器都有一个父类加载器.本章通过分析ClassLoader的源码来展示java类加载器的层次结构. 根据规定,类加载器会为它的父类加载器提供一个机 ...

  8. jvm类加载机制和类加载器_在JVM之下–类加载器

    jvm类加载机制和类加载器 在许多开发人员中,类加载器是Java语言的底层,并且经常被忽略. 在ZeroTurnaround上 ,我们的开发人员必须生活,呼吸,饮食,喝酒,并且几乎与类加载器保持亲密关 ...

  9. java简单通讯录的实现02person类_Java自定义类加载器实现不同版本的类加载

    一 什么是类隔离技术 只要你 Java 代码写的足够多,就一定会出现这种情况:系统新引入了一个中间件的 jar 包,编译的时候一切正常,一运行就报错:java.lang.NoSuchMethodErr ...

最新文章

  1. AI寒冬将至?这10大突破点至关重要
  2. [改善Java代码] 避免instanceof非预期结果
  3. TableView的重要性
  4. idea使用lombok不生效的解决办法
  5. 2016年11月2日——jQuery源码学习笔记
  6. Electron中通过process进程对象的api获取CPU、系统位数、环境变量等相关信息
  7. Junit测试报错:java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
  8. 绿盟科技发布OpenSSL高危漏洞技术分析与防护方案 G20成员国美国、中国、德国受影响较大...
  9. 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)
  10. 新学了一个用python编写的简单的百度贴吧帖子的爬虫
  11. python list去重时间复杂度_List集合去重的一种方法 z
  12. Facebook今年曾多次升级其安全和隐私控制
  13. python 网页版笔记_系统学习下python网络爬虫 笔记一
  14. android系统(8)---android事件分发机制
  15. 院士大咖齐聚苏州,共话AI未来,30个优秀个人和企业、产品受到表彰
  16. Swift - 设置应用程序图标的提醒个数(右上角小红圈)
  17. linux中为什么已经是root用户仍不能执行程序
  18. 新浪微博开放平台链接耗尽的情况分析
  19. ajax调用微信退款接口,微信退款(在.net core 用http方式请求)
  20. java基础-面向对象

热门文章

  1. 取嚏法、推腹法、跪膝法这些有效实用消百病的方法
  2. 美术宝软件测试面试流程怎么样,“倒数第一”试卷走红,老师气得找家长,美术老师却表示有前途...
  3. nofollow标签是什么?有用吗?如何添加?
  4. M3U8多线程下载器
  5. ipadpro分屏怎么操作_iPad Pro绝配?T-bao便携显示器深度体验
  6. 送书 |日本漫画巨匠力作,看漫画就能学会Python,简直不要太轻松
  7. WPS新建XLSX文件,保存时提示含有不兼容
  8. 基于python+vue+elementUI+django高校教室管理系统(前后端分离)#毕业设计
  9. 拼多多无货源店群只需要一个简单的网店运营工具
  10. Vue之Axios跨域问题解决方案