第7章 虚拟机类加载机制
来源:互联网 发布:unity3d 导弹跟随 编辑:程序博客网 时间:2024/05/01 03:20
类加载器之间的父子关系
一、类加载器的启动过程
JVM启动时,首先启动启动类加载器(Bootstrap ClassLoader),然后启动类加载器加载扩展类加载器(ExtClassLoader)和程序类加载器(AppClassLoader);
启动类加载器用于加载Java核心API,包括扩展类加载器和程序类加载器;扩展类加载器加载扩展API,即/lib/ext中的类;程序类加载器加载CLASSPATH目录下的Class
通常在没有指定ClassLoader的情况下,程序员自定义的类就由程序类加载器加载。
扩展类加载器和程序类加载器都是java类,都由启动类加载器加载;
启动类加载器不是java类,是嵌套在java虚拟机内核中的一段C++代码,随着虚拟机的启动而启动。
二、类加载器的委托机制
每个类加载器加载类时,先委托给其上级类加载器,一层一层向上直到祖宗类加载器;
当所有的祖宗类加载器都没有加载到类,则回到发起者类加载器,如果还加载不了,则抛出ClassNotFoundException。
三、类加载器加载类的过程
装载、连接、初始化。
装载:
找到相应的class文件,读入JVM。
连接(分三步):
1.第一步:验证。验证class是否符合规格。
2.第二部:准备。为类变量分配内存,设置默认初始值。
3.第三步:解析。这步是可选的,可以通过loadClass方法来设置。根据类中的符号引用查找相应的实体,再把符号引用替换成一个直接引用的过程。
初始化:
就是调用类构造器对class进行初始化。
四、类的唯一性
类的唯一性由类加载器和类本身一同确定;
只有由同一个类加载器加载的同一个类才有可能相等;
即使同一个类文件,只要由不同的类加载器加载,那这两个类就是不同的。
0 0
- 第7章 虚拟机类加载机制
- 第7章 虚拟机类加载机制
- 第7章 虚拟机类加载机制
- 第7章 虚拟机类加载机制
- 第7章 虚拟机类加载机制
- 第7章 虚拟机类加载机制7.1~7.3
- 第7章 虚拟机类加载机制--《深入理解 Java 虚拟机》笔记
- 《深入理解Java虚拟机》第7章 虚拟机类加载机制
- JVM笔记整理(第7章 虚拟机类加载机制)
- 7虚拟机类加载机制
- 虚拟机类加载机制
- 虚拟机类加载机制
- 虚拟机类加载机制
- 虚拟机类加载机制
- 虚拟机类加载机制
- 虚拟机类加载机制.
- 虚拟机类加载机制
- 虚拟机类加载机制
- java 上传文件到oss(阿里云)
- css3伪类选择器
- ReactiveCocoa理解
- python基础之异常处理
- poj-2503 字典树
- 第7章 虚拟机类加载机制
- js页面跳转
- vue,router-link传参以及参数的使用
- Java回调机制(二)
- python基础之模块之序列化
- logback log4j log4j2 性能实测
- Android创建桌面图标
- Linux入门5(手记)——挂载
- python opencv3 —— 改变颜色空间(color space)