第四章 虚拟机类加载

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 一前言二类加载过程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服务颠覆了类加载的委派方式。

目录
相关文章
|
6月前
|
前端开发 安全 Java
聊聊Java虚拟机(一)—— 类加载子系统
虚拟机就是一款用来执行虚拟计算机指令的计算机软件。它相当于一台虚拟计算机。大体上,虚拟机分为系统虚拟机和程序虚拟机。系统虚拟机就相当于一台物理电脑,里面可以安装操作系统;程序虚拟机是为了执行单个计算机程序而设计出来的虚拟机。其中 Java 虚拟机就是**执行 Java 字节码指令的虚拟机**。
70 2
|
2月前
|
存储 算法 Java
深入解析 Java 虚拟机:内存区域、类加载与垃圾回收机制
本文介绍了 JVM 的内存区域划分、类加载过程及垃圾回收机制。内存区域包括程序计数器、堆、栈和元数据区,每个区域存储不同类型的数据。类加载过程涉及加载、验证、准备、解析和初始化五个步骤。垃圾回收机制主要在堆内存进行,通过可达性分析识别垃圾对象,并采用标记-清除、复制和标记-整理等算法进行回收。此外,还介绍了 CMS 和 G1 等垃圾回收器的特点。
112 0
深入解析 Java 虚拟机:内存区域、类加载与垃圾回收机制
|
存储 安全 Java
《Java 虚拟机》 类加载阶段
《Java 虚拟机》 类加载阶段
223 0
《Java 虚拟机》 类加载阶段
|
Java
【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )
【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )
591 0
【Java 虚拟机原理】Java 类中的类加载初始化细节 ( 只使用类中的常量时加载类不会执行到 ‘初始化‘ 阶段 )
|
Java
【Java 虚拟机原理】Java 类加载过程 ( 加载 | 连接 - 验证 准备 解析 | 初始化 | 使用 | 卸载 )
【Java 虚拟机原理】Java 类加载过程 ( 加载 | 连接 - 验证 准备 解析 | 初始化 | 使用 | 卸载 )
138 0
【Java 虚拟机原理】Java 类加载过程 ( 加载 | 连接 - 验证 准备 解析 | 初始化 | 使用 | 卸载 )
|
存储 前端开发 安全
|
Java
java 虚拟机内存划分,类加载过程以及对象的初始化
涉及关键词: 虚拟机运行时内存 java内存划分 类加载顺序  类加载时机  类加载步骤  对象初始化顺序  构造代码块顺序 构造方法 顺序 内存区域   java内存图  堆 方法区 虚拟机栈 本地方法栈 程序计数器  局部变量表   栈帧  java堆 运行时常量池   直接内存    本文从三个部分理解java的初始化 1).
1806 0
|
存储 安全 Java
[深入理解Java虚拟机]第七章 类加载的过程 接下来我们详细讲解一下Java虚拟机中类加载的全过程,也就是加载、验证、准备、解析和初始化这5个阶段所执行的具体动作。加载“加载”是“类加载”(C
 通过之前的介绍可知,类加载过程共有5个步骤,分别是:加载、验证、准备、解析、初始化。其中,验证、准备、解析称为连接。
1705 0
|
Java 存储
虚拟机的类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类 即虚拟机的类加载机制. 在Java中,类型的加载、链接和初始化过程都是在程序运行期间完成的 如编写一个面向接口的应用程序,可等到运行时再指定其实际的实现类.
820 0

热门文章

最新文章