第四章 虚拟机类加载

简介: 一前言二类加载过程1 初始化2加载3验证4准备5解析三双亲委派模型双全委派破坏31一、前言关于class文件的接口,这里不做分享,简单描述一下,class文件是一些二进制字符组成的字符文件,主要有文件头(OXCoffeebaby)、文件内容组成,包括我们的知道的一些约束条件,例如是否private、public等属性,以及数据类型等。

一、前言

关于class文件的接口,这里不做分享,简单描述一下,class文件是一些二进制字符组成的字符文件,主要有文件头(OXCoffeebaby)、文件内容组成,包括我们的知道的一些约束条件,例如是否private、public等属性,以及数据类型等。当class文件+指令集(在jvm栈里面存储)就可以执行一次操作,如果有错误欢迎指正。以上就是对class文件的简单描述,接下来将会分享一些类加载的过程。

类的生命周期

二、类加载过程

1.1 初始化

对于什么时间进行初始化jvm没有做具体要求,但是对于初始化有如下要求,加载、验证、准备自然需要在此之前。
*1、进行new、getstatic、putstatic、invokStatic时候
    需要加载步骤(创建变量、静态方法调用)
2、反射时候,使用reflect类时候
3、初始化父类
4、main()入口类
5、MethodHandle解析结果为上诉1情况时候
*

1.2加载

1、通过全限定名订单二进制流
2、将二进制流转换为方法区的运行时数据结构
3、在内存中生成一个java.lang.class的对象,作为访问入口。

1.3验证

1、文件格式的验证
2、元数据验证-类特性等等
3、字节码验证
4、符号引用的验证

1.4准备

正式类变量分配内存与初始值复制0.static例外,可以直接在准备阶段赋值。

1.5解析

将常量池的符号引用换为直接引用。
类接口解析:
A、非数组,全限定名解析,类加载器去加载,还可以出发父类加载等。
B、数据,数组解析,生成数组对象。
C、符号引用验证,是否有权限。

三、双亲委派模型

这里写图片描述

双亲委派模式:一个类收到类加载请求,不会自己尝试加载,而是委派给父亲去加载,只有当父亲无法完成加载,子加载器才会自己加载。(意思就是基础的东西他全部都有了,我们只要加载它作为基础)

双全委派破坏3·1·

1、JNDI标准服务,通过线程上下文加载器,通过Thread设置。
2、OSGI服务颠覆了类加载的委派方式。

目录
相关文章
|
3月前
|
前端开发 安全 Java
聊聊Java虚拟机(一)—— 类加载子系统
虚拟机就是一款用来执行虚拟计算机指令的计算机软件。它相当于一台虚拟计算机。大体上,虚拟机分为系统虚拟机和程序虚拟机。系统虚拟机就相当于一台物理电脑,里面可以安装操作系统;程序虚拟机是为了执行单个计算机程序而设计出来的虚拟机。其中 Java 虚拟机就是**执行 Java 字节码指令的虚拟机**。
45 2
|
存储 安全 Java
《Java 虚拟机》 类加载阶段
《Java 虚拟机》 类加载阶段
194 0
《Java 虚拟机》 类加载阶段
|
Java
【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )
【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )
148 0
【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )
|
Java
【Java 虚拟机原理】Java 类加载过程 ( 加载 | 连接 - 验证 准备 解析 | 初始化 | 使用 | 卸载 )
【Java 虚拟机原理】Java 类加载过程 ( 加载 | 连接 - 验证 准备 解析 | 初始化 | 使用 | 卸载 )
109 0
【Java 虚拟机原理】Java 类加载过程 ( 加载 | 连接 - 验证 准备 解析 | 初始化 | 使用 | 卸载 )
|
存储 前端开发 安全
|
Java
java 虚拟机内存划分,类加载过程以及对象的初始化
涉及关键词: 虚拟机运行时内存 java内存划分 类加载顺序  类加载时机  类加载步骤  对象初始化顺序  构造代码块顺序 构造方法 顺序 内存区域   java内存图  堆 方法区 虚拟机栈 本地方法栈 程序计数器  局部变量表   栈帧  java堆 运行时常量池   直接内存    本文从三个部分理解java的初始化 1).
1755 0
|
存储 安全 Java
[深入理解Java虚拟机]第七章 类加载的过程 接下来我们详细讲解一下Java虚拟机中类加载的全过程,也就是加载、验证、准备、解析和初始化这5个阶段所执行的具体动作。加载“加载”是“类加载”(C
 通过之前的介绍可知,类加载过程共有5个步骤,分别是:加载、验证、准备、解析、初始化。其中,验证、准备、解析称为连接。
1652 0
|
Java 存储
虚拟机的类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类 即虚拟机的类加载机制. 在Java中,类型的加载、链接和初始化过程都是在程序运行期间完成的 如编写一个面向接口的应用程序,可等到运行时再指定其实际的实现类.
803 0
|
存储 安全 前端开发
深入理解JVM虚拟机读书笔记——类的加载机制
注:本文参考自周志明老师的著作《深入理解Java虚拟机(第3版)》,相关电子书可以关注WX公众号,回复 001 获取。
深入理解JVM虚拟机读书笔记——类的加载机制

热门文章

最新文章