JVM 类加载机制

本文探讨了Java的类加载机制,这是Java流行的原因之一。类加载涉及加载、校验、转换解析和初始化,提供了运行期动态加载的灵活性。核心知识点包括加载过程的加载、验证、准备、解析和初始化阶段,以及类加载器和双亲委派模型。学习类加载机制对于理解和应对面试中的相关问题至关重要。
摘要由CSDN通过智能技术生成

学习导图

一.为什么要学习类加载机制?

今天想跟大家唠嗑唠嗑 Java 的类加载机制,这是 Java 的一个很重要的创新点,曾经也是 Java 流行的重要原因之一。

Oracle 当初引入这个机制是为了满足 Java Applet 开发的需求, JVM 咬咬牙引入了 Java 类加载机制,后来的基于 Jvm 的动态部署,插件化开发包括大家热议的热修复,总之很多后来的技术都源于在 JVM 中引入了类加载器。

如今,类加载机制也在各个领域大放异彩,在面试中,由类加载机制所衍生出来各类面试题也层出不穷。

所以,我们要了解下类加载机制,为工作中或者是面试中实际的需要打好良好的基础。

二.核心知识点归纳

2.1 概述

Q1:JVM类加载机制定义:

虚拟机把描述类的数据从 Class 文件 加载 到内存,并对数据进行 校验 、 转换解析 和 初始化 ,最终形成可被虚拟机直接使用的 Java 类型的过程

Q2:特性

运行期类加载。即在 Java 语言里面,类型的加载、连接和初始化过程都是在程序 运行期 完成的,从而通过牺牲一些性能开销来换取 Java 程序的高度灵活性

什么是运行期,什么是编译期?

  • 编译期 是指编译器将 源代码翻译 为 机器能识别的代码 , Java 被编译为 Jvm 认识的 字节码文件
  • 运行期 则是指 Java 代码的 运行 过程

JVM 运行期动态加载+动态连接-> Java 的动态扩展特性

2.2 类加载的过程

类从被加载到虚拟机内存中开始、到卸载出内存为止,整个生命周期包括七个阶段:

  • 加载
  • 验证
  • 准备
  • 解析
  • 初始化
  • 使用
  • 卸载

其中,验证、准备、解析这3个部分统称为 连接 ,流程如下图:

注意:

『加载』->『验证』->『准备』->『初始化』->『卸载』这五个阶段的顺序是确定的,而『解析』可能为了支持Java的动态绑定会在『初始化』后才开始
上述阶段通常都是互相交叉地混合式进行的,比如会在一个阶段执行的过程中调用、激活另外一个阶段

2.2.1 加载

Q1:任务

  • 通过类的全限定名来获取定义此类的 二进制字节流 。如从 ZIP 包读取、从网络中获取、通过运行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值