类的加载器的介绍 和 类的加载过程
java的3大加载器
引导类加载器
BootStrapClassLoader
扩展类加载器
ExtensionClassLoader
应用程序类加载器
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应用程序启动的过程:
- 首先
.java
文件被javac编译成.class
文件。 - 当我们启动
java程序
的时候,.class
文件通过类加载子系统加载到内存中,类加载子系统分为3大加载器(BootStrapClassLoader、ExtensionClassLoader、ApplicationClassLoader
)。
首先需要加载java基础的类库(上面有介绍),也就是BootStrapClassLoader
加载java类库,当引导类加载器加载完毕后,接着ExtensionClassLoader
加载扩展类类库,再接着就是ApplicationClassLoader
将main方法所在的类加载到内存中。
在程序的运行过程中会使用到其它类文件,加载除main方法以为的类时,存在 类的双亲委托机制 以及 沙箱机制,可以简单的理解为先询问BootStrapClassLoader
有没有将类加载到内存,如果没有,再接着询问ExtensionClassLoader
有没有将这个类加载到内存,如果前面都没有加载才会使用ApplicationClassLoader
进行加载。BootStrapClassLoader、ExtensionClassLoader
他们加载的类路径是固定的,因此他们加载的类也是比较固定的(除非将自己的类放到类库路径下)。 - 类的加载子系统又进一步分为:加载、链接、初始化。
类加载到内存中会经过加载、验证、准备、解析、初始化(主要是 静态成员变量、静态代码块 的初始化
),初始化完成后才算加载到内存中
完成上面动作后应用程序就算启动完成了,剩下的就是应用程序的生命周期
类的加载器的介绍 和 类的加载过程相关推荐
- 一种保护应用程序的方法 模拟Windows PE加载器,从内存资源中加载DLL
暂未整理,成文见: http://hi.baidu.com/kisbuddy/blog/item/f5da581035197e4bf2de32a2.html
- 低成本扫码地推公众号加真粉方式介绍系列之体重秤加粉
现在的微信粉丝成本越来越高.对于公众号运营者来说,大家越来越关心的问题是:怎么获取粉丝,顾客从哪来,如何把粉丝转化成顾客-- 但是如何引流和为公众号加粉呢? 在线上渠道,很多公众号所运用的方式,细细分 ...
- python在类内部使用装饰器_python – 如何在类中使用装饰器
我知道有类似的问题,但我的情况有些不同:参考代码: class MyClass(object): def __init__(self, log_location) self.logs = loggin ...
- 一步步手动实现热修复(二)-类的加载机制简要介绍
*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 本节课程主要分为3块: 1.一步步手动实现热修复(一)-dex文件的生成与加载 2.一步步手动实现热修复(二)-类的加载机制简要介 ...
- 28 Java类的加载机制、什么是类的加载、类的生命周期、加载:查找并加载类的二进制数据、连接、初始化、类加载器、双亲委派模型、自定义类加载器
28Java类的加载机制 28.1.什么是类的加载 28.2.类的生命周期 28.2.1.加载:查找并加载类的二进制数据 28.2.2.连接 28.2.3.初始化 28.3.类加载器 28.4.类的加 ...
- Day18 (一)类的加载器
一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这个虚拟机实例也就随之消亡. 如果在同一台计算机上同时运行多个Java程序 ...
- 尚硅谷2020最新版宋红康JVM教程-中篇-第4章:再谈类的加载器-02和03-类的加载器分类
引言 JVM支持两种类型的类加载器,分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader). 从概念上来讲,自定义类加载器 ...
- Android Loader(加载器)详解
Loader(加载器)简介 Android 3.0 中引入了加载器,支持轻松在 Activity 或Fragment中异步加载数据. 加载器具有以下特征: (1)可用于每个 Activity 和 Fr ...
- Android 之Loader(加载器)
介绍 Android 3.0 中引入了加载器,支持轻松在 Activity 或片段中异步加载数据. 加载器具有以下特征: 可用于每个 Activity 和 Fragment. 支持异步加载数据. 监控 ...
最新文章
- php url 安全性,在php中获取url内容的安全性
- 人类倾向于高估人工智能的进步,低估自身智能的复杂性-读《AI 3.0》
- 深度强化学习_深度学习理论与应用第8课 | 深度强化学习
- python3.8安装pip-CentOS7.2安装python3.8与pip
- ApacheTomcat解析请求参数的过程
- python为类定义构造函数
- 漫谈边缘计算(二):各怀心事的玩家
- pandas中计算两列相乘
- java框架实例---自定义标签实例
- linux vmware时间问题
- VS2015 更换exe的图标
- 病历管理系统V 1.0源码分享
- 基于springboot的科技馆设备巡检系统
- Java实现抽象工厂模式
- Android开发中导入字体库
- 主题:讲解三层代码讲解(ActiveList的Action的工作方式)--第五课(*****) DATE:2004-06-03...
- java fastjson 格式化_json的格式化展示(基于 fastjson)
- OSChina 周四乱弹 —— 用户体验不好就是要出人命的
- 华为手机录音m4a格式怎么转换为MP3格式
- 大数据运营之财务数据模型设计
热门文章
- MSF外网渗透+shellcode免杀
- python pandas 增加一列_Python之pandas新增列
- 国内如何下载并使用LINE(免费提供apk安装包)
- linux好几百g空间使用,linux磁盘空间被占用100%-148
- 利用slf4j+log4j将日志写入指定的文件中
- 几个命令查看ELF文件的“秘密”
- 猫眼top100部高分电影spider
- python ip动态代理_动态代理服务器
- 学计算机每天应该吃什么,上班族长时间看电脑,哪些食物对眼睛好?
- GitHub的Linux配置与常用操作