java的3大加载器

  1. 引导类加载器 BootStrapClassLoader

  2. 扩展类加载器 ExtensionClassLoader

  3. 应用程序类加载器 ApplicationClassLoader

    三大类加载器可以简单的理解为:

    BootStrapClassLoader加载的是JVM核心类的类库
    ExtensionClassLoader加载的是扩展类的类库
    ApplicationClassLoader加载我们自己写的java类类库

类的加载器加载了哪些类库

jdk1.8中BootStrapClassLoader加载D:\Program Files\Java\jdk1.8.0_201\jre\lib下的

  • resources.jar
  • rt.jar
  • sunrsasign.jar
  • jsse.jar
  • jce.jar
  • charsets.jar
  • jfr.jar
    以及 D:/Program Files/Java/jdk1.8.0_201/jre/classes文件夹下的class文件

ExtensionClassLoader加载java的扩展类类库
D:\Program Files\Java\jdk1.8.0_201\jre\lib\ext
例如

  • access-bridge-64.jar
  • cldrdata.jar
  • dnsns.jar
  • jaccess.jar
  • jfxrt.jar
  • localedata.jar
  • nashorn.jar
  • sunec.jar
  • sunjce_provider.jar
  • sunmscapi.jar
  • sunpkcs11.jar
  • zipfs.jar

ApplicationClassLoader加载应用程序的类

java应用程序启动的过程:

  1. 首先.java文件被javac编译成.class文件。
  2. 当我们启动java程序的时候,.class文件通过类加载子系统加载到内存中,类加载子系统分为3大加载器(BootStrapClassLoader、ExtensionClassLoader、ApplicationClassLoader)。
    首先需要加载java基础的类库(上面有介绍),也就是BootStrapClassLoader加载java类库,当引导类加载器加载完毕后,接着ExtensionClassLoader加载扩展类类库,再接着就是ApplicationClassLoader将main方法所在的类加载到内存中。
    在程序的运行过程中会使用到其它类文件,加载除main方法以为的类时,存在 类的双亲委托机制 以及 沙箱机制,可以简单的理解为先询问BootStrapClassLoader有没有将类加载到内存,如果没有,再接着询问ExtensionClassLoader有没有将这个类加载到内存,如果前面都没有加载才会使用ApplicationClassLoader进行加载。BootStrapClassLoader、ExtensionClassLoader他们加载的类路径是固定的,因此他们加载的类也是比较固定的(除非将自己的类放到类库路径下)。
  3. 类的加载子系统又进一步分为:加载、链接、初始化。
    类加载到内存中会经过加载、验证、准备、解析、初始化(主要是 静态成员变量、静态代码块 的初始化),初始化完成后才算加载到内存中
完成上面动作后应用程序就算启动完成了,剩下的就是应用程序的生命周期

类的加载器的介绍 和 类的加载过程相关推荐

  1. 一种保护应用程序的方法 模拟Windows PE加载器,从内存资源中加载DLL

    暂未整理,成文见: http://hi.baidu.com/kisbuddy/blog/item/f5da581035197e4bf2de32a2.html

  2. 低成本扫码地推公众号加真粉方式介绍系列之体重秤加粉

    现在的微信粉丝成本越来越高.对于公众号运营者来说,大家越来越关心的问题是:怎么获取粉丝,顾客从哪来,如何把粉丝转化成顾客-- 但是如何引流和为公众号加粉呢? 在线上渠道,很多公众号所运用的方式,细细分 ...

  3. python在类内部使用装饰器_python – 如何在类中使用装饰器

    我知道有类似的问题,但我的情况有些不同:参考代码: class MyClass(object): def __init__(self, log_location) self.logs = loggin ...

  4. 一步步手动实现热修复(二)-类的加载机制简要介绍

    *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 本节课程主要分为3块: 1.一步步手动实现热修复(一)-dex文件的生成与加载 2.一步步手动实现热修复(二)-类的加载机制简要介 ...

  5. 28 Java类的加载机制、什么是类的加载、类的生命周期、加载:查找并加载类的二进制数据、连接、初始化、类加载器、双亲委派模型、自定义类加载器

    28Java类的加载机制 28.1.什么是类的加载 28.2.类的生命周期 28.2.1.加载:查找并加载类的二进制数据 28.2.2.连接 28.2.3.初始化 28.3.类加载器 28.4.类的加 ...

  6. Day18 (一)类的加载器

    一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这个虚拟机实例也就随之消亡. 如果在同一台计算机上同时运行多个Java程序 ...

  7. 尚硅谷2020最新版宋红康JVM教程-中篇-第4章:再谈类的加载器-02和03-类的加载器分类

    引言 JVM支持两种类型的类加载器,分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader). 从概念上来讲,自定义类加载器 ...

  8. Android Loader(加载器)详解

    Loader(加载器)简介 Android 3.0 中引入了加载器,支持轻松在 Activity 或Fragment中异步加载数据. 加载器具有以下特征: (1)可用于每个 Activity 和 Fr ...

  9. Android 之Loader(加载器)

    介绍 Android 3.0 中引入了加载器,支持轻松在 Activity 或片段中异步加载数据. 加载器具有以下特征: 可用于每个 Activity 和 Fragment. 支持异步加载数据. 监控 ...

最新文章

  1. php url 安全性,在php中获取url内容的安全性
  2. 人类倾向于高估人工智能的进步,低估自身智能的复杂性-读《AI 3.0》
  3. 深度强化学习_深度学习理论与应用第8课 | 深度强化学习
  4. python3.8安装pip-CentOS7.2安装python3.8与pip
  5. ApacheTomcat解析请求参数的过程
  6. python为类定义构造函数
  7. 漫谈边缘计算(二):各怀心事的玩家
  8. pandas中计算两列相乘
  9. java框架实例---自定义标签实例
  10. linux vmware时间问题
  11. VS2015 更换exe的图标
  12. 病历管理系统V 1.0源码分享
  13. 基于springboot的科技馆设备巡检系统
  14. Java实现抽象工厂模式
  15. Android开发中导入字体库
  16. 主题:讲解三层代码讲解(ActiveList的Action的工作方式)--第五课(*****) DATE:2004-06-03...
  17. java fastjson 格式化_json的格式化展示(基于 fastjson)
  18. OSChina 周四乱弹 —— 用户体验不好就是要出人命的
  19. 华为手机录音m4a格式怎么转换为MP3格式
  20. 大数据运营之财务数据模型设计

热门文章

  1. MSF外网渗透+shellcode免杀
  2. python pandas 增加一列_Python之pandas新增列
  3. 国内如何下载并使用LINE(免费提供apk安装包)
  4. linux好几百g空间使用,linux磁盘空间被占用100%-148
  5. 利用slf4j+log4j将日志写入指定的文件中
  6. 几个命令查看ELF文件的“秘密”
  7. 猫眼top100部高分电影spider
  8. python ip动态代理_动态代理服务器
  9. 学计算机每天应该吃什么,上班族长时间看电脑,哪些食物对眼睛好?
  10. GitHub的Linux配置与常用操作