Java虚拟机的类加载机制

深入理解Java虚拟机——JVM类加载机制(类加载过程和类加载器) 一、什么是类加载机制?虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。二、类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准(Preparation)、解析(Resolution)、初始化(Initial 阅读详情

一、类的生命周期:
类的生命周期包括:加载、验证、准备、解析、初始化、使用、卸载。其中验证、准备、解析又称连接。
加载:

  1. 通过一个类的全限定名来获取定义此类的二进制字节流。
  2. 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
  3. 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。

验证:
需要注意几个验证阶段
1. 第一阶段主要验证字节流是否符合Class文件格式的规范,并且能被当前版本的虚拟机处理。
2. 第二阶段主要是对字节码描述的信息进行语义分析,如:这个类是否有父类、这个类是否继承了不允许被继承的类(被final修饰的类)。

准备:

准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这里的类变量仅仅是指被static修饰的变量而不包括实例变量,实例变量会在对象实例化时随着对象一起分配到java堆内存中,其次这个初始值数据的零值,例如:

 public static int value =123;

那变量value在准备过后的阶段过后的初始值为0而不是123,因为这个时候尚未执行任何java方法

解析
解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程。

初始化
初始化接阶段才开始执行类中定义的java程序代码(或者说是字节码)
注意:静态语句块中只能访问到定义在静态语句块之前的变量,定义在他之后的变量,在前面的静态语句块可以赋值,但是不能访问。

**public class Test{
    static {
        int i=0;
        System.out.print(i);
    }
    static int int =1;
}**

二、类加载器
类加载器可以分为:启动类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)、应用程序类加载器(Application ClassLoader),其中启动类加载器和扩展类加载器负责加载java_home\lib目录下的类库,应用程序加载器主要负责加载用户Classpath上指定的类库。

Silvaco二极管、三极管、CMOS的制备 Silvaco二极管和三极管的制备 阅读详情

相关推荐

uniapp 使用摄像头 live-pusher (APP)

uniapp 中开发 app 时使用live-pusher踩过的坑

随身笔记 1万+

【Java虚拟机系列】- Java虚拟机类加载机制

类加载器Class Loader:实现类的加载动作,该部分代码实现通过一个类的全限定名来获取描述该类的二进制字节流,在Java虚拟机外部实现任一类都必须由加载它的类加载器和该类自身一起确定其在JVM中的唯一性,比较两个类是否相等只有在它们都由同一类加载器加载的前提下才有意义;否则,即使这两个类来源于同一个Class文件,被同一个Java虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等模块化的关键目标——可配置的封装隔离机制模块将代码分解为更小、更独立的部分。

m0_68383079的博客 1113

水气泵控制原理,三角波发生电路,LM331M/TR芯片,高速运放芯片

气泵的控制采用闭环控制,根据气泵的FG反馈信号进行反馈调节,由于气泵的反馈信号是脉冲反馈,即频率改变,占空比不变,即需要通过F/V转换芯片转换成电压信号,变为电压与转速成正比,其电压进入比较器与基准电压进行比较,将比较结果进行运算并进行PWM控制信号。水泵的控制采用闭环控制,根据水泵的pwm信号进行反馈调节,水泵的反馈信号是脉冲反馈,即频率改变,占空比不变,即需要通过F/V转换芯片转换成电压信号,变为电压与转速成反比,其电压进入比较器与基准电压进行比较,将比较结果进行运算并对PWM控制信号。

m0_51010122的博客 2857

Java虚拟机类加载机制详解

Java虚拟机的类加载机制是一个复杂且高效的过程,包括加载、验证、准备、解析和初始化等多个阶段。每个阶段都有严格的规范,确保程序在不同环境中稳定运行。理解类加载的时机、过程和类加载器的工作原理,有助于开发者更好地掌握JVM,优化应用程序的性能,解决类加载相关的问题。掌握双亲委派模型和类加载器的实现机制,对深入理解JVM和进行系统优化尤为重要。

dm菜鸟编程的专栏 994

Claude Code 完整学习笔记

Claude Code 学习笔记摘要 Claude Code是Anthropic推出的智能编码工具,基于Claude Opus 4.5模型构建,提供跨平台支持(终端/VS Code/JetBrains/Web等)。核心功能包括: 代码库理解与多文件编辑 命令执行与开发工具集成 智能体协作开发流程 安装要求Node.js≥18,提供原生/Homebrew/npm等多种安装方式,支持环境变量配置API访问。基础交互模式包括会话管理、文件操作和代码审查等功能,可自动读写文件并执行精确修改。 (149字)

虚心若愚 812

PaddleOCR全版本完整指南:从入门到精通,全面解析安装部署与高级应用

摘要 本文详细介绍了PaddleOCR的完整安装与使用指南。首先讲解了环境准备步骤,包括Python 3.11虚拟环境创建和PaddlePaddle框架的CPU/GPU版本安装。接着介绍了PaddleOCR库的安装方式,可选功能模块(文档解析、信息抽取、翻译等)及其依赖组。通过示例代码演示了PPStructureV3文档解析功能的基本用法,并提供了安装验证方法。最后针对常见问题(Windows中文用户名报错、模型下载问题)给出解决方案。文章为从入门到精通的PaddleOCR用户提供了全面的技术指导。

算法工程师 1367

面试官,不要再问我“Java虚拟机类加载机制”了

关于Java虚拟机类加载机制往往有两方面的面试题:根据程序判断输出结果和讲讲虚拟机类加载机制的流程。其实这两类题本质上都是考察面试者对Java虚拟机类加载机制的了解。 面试题试水 现在有这样一道判断程序输出结果的面试题,先看看打印的结果是什么? public class SuperClass { static { System.out.println("SuperCla...

程序新视界 1万+

本地搭建 GitLab 14.1.0版本CI/CD

GitLab 镜像版本 gitlab/gitlab-ce:14.1.0-ce.0 GitLab Runner 镜像版本 gitlab/gitlab-runner:v14.1.0 搭建此套环境是在一台32G的windows电脑上安装的。 使用dokcer安装。 此外还涉及的软件Docker Desktop,WSL 安装GitLab 首先启动 dockcer,打开WSL 打开后 首先定义GitLab的持久化目录 export GITLAB_HOME=/srv/gitlab 然后运行安装GitLab的命令

知无涯 4492

深入理解Java虚拟机——类加载机制

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来

SmallWinWin的博客 1552

【云原生技术】sonar的官方web接口,获取质量阀结果的接口

以下是一个示例思路,说明如何调用 SonarQube 的质量阀查询接口并在前端展示“哪些条件没过”。假设前端使用 AJAX 或 fetch 从后端接口拿到 SonarQube 返回的 JSON(或直接前端请求 SonarQube API),前端再把解析结果展示给用户。测试覆盖率 (Coverage) 当前仅有 60%,未满足最低 80% 的要求,需要补充测试或优化以提升覆盖率。接口),就会返回相应的质量阀状态信息;里使用它来查询当前质量阀(质量门)的状态。,你用它即可获取该次分析的质量阀状态。

weixin_46453070的博客 1281

【FF-A】第二章 Introduction

Armv8.4 架构引入了在安全状态下的虚拟化扩展。Arm® SMMU v3.2 架构[1]为安全流添加了对第2阶段翻译的支持,以补充在 Armv8.4 处理器状态下的安全 EL2 翻译制度。这些架构特性使得在安全状态下,彼此不信任的软件组件能够相互隔离。关于在安全状态下引入虚拟化扩展以及固件框架目标的更多理念可在名为《在安全世界使用虚拟化进行隔离》的白皮书[3]中找到。软件组件只能访问物理地址空间和系统资源的区域,例如 GIC 中对其正确运行必要的中断。

baron-周贺贺-代码改变世界ctw 528

Java虚拟机类加载机制详细总结

的阶段,从概念上讲,这些变量所使用的内存都应当在方法区中进行分配,但必须注意到方法区本身是一个逻辑上的区域,在JDK 7及之前,HotSpot使用。

qq_62636650的博客 978

DRV8311HRRWR直流无刷(BLDC)电机驱动原理图设计

DRV8311HRRWR集成三个MOSFET 半H桥,用于驱动三相无刷直流电机(BLDC),适用于5V、9V、12V或18V直流电源轨或1S至4S电池供电应用。内部集成三个具有集成电流感测功能的电流感测放大器(CSA),可感测BLDC电机的三相电流,从而实现FOC和电流控制系统设计方案。集成保护特性:VM 欠压锁定 (UVLO)、 电荷泵欠压 (CPUV)、过流保护 (OCP)、热警告和热关断 (OTW/OTSD)、故障条件指示引脚 (nFAULT)支持 1.8V、3.3V 和 5V 逻辑输入。

zhusl6688的博客 1229

深入理解Java虚拟机的类加载机制

Java虚拟机的类加载机制是Java平台灵活性和可扩展性的关键所在。通过深入理解类加载的概念、过程、类加载器、双亲委派模型以及类的卸载与重加载,开发者可以更好地掌握Java程序的运行原理,并在必要时通过自定义类加载器和热部署等技术手段,实现高度灵活的应用架构。在Java虚拟机中,类的加载是指将class文件从硬盘读取到内存中,并创建对应的Class对象的过程。1. 使用自定义类加载器动态加载类。2. 自定义类加载器的实现与优化。3. 类的卸载与重加载策略。1. 系统提供的类加载器。四、类的卸载与重加载。

N201871643的博客 763

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java虚拟机面试题:类加载机制

双亲委派模型要求类加载器在加载类时,先委托父加载器尝试加载,只有父加载器无法加载时,子加载器才会加载。当一个类加载器需要加载某个类时,它首先会请求其父类加载器加载这个类。这个过程会一直向上递归,也就是说,从子加载器到父加载器,再到更上层的加载器,一直到最顶层的启动类加载器(Bootstrap ClassLoader)。启动类加载器会尝试加载这个类。如果它能够加载这个类,就直接返回;如果它不能加载这个类(因为这个类不在它的搜索范围内),就会将加载任务返回给委托它的子加载器。

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 1058

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JVM Java虚拟机中类加载机制

Java 中的类加载器 学习总结于-《深入了解JAVA虚拟机》-周自明 Java虚拟机的类加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是Java虚拟机的类加载机制 Java类具体是如何被加载的,请参照文章:https://blog.youkuaiyun.com/qq_28082757/article/details/106427403 在了解Java虚拟机是如何进行类加载过程之后,就需要弄明白今天的主角儿,什么类加载器? 在类

江湖人称小程的博客 851

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java虚拟机类加载机制

概念:Java虚拟机把描述累的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制 类的加载、链接、初始化都是在程序运行期间完成的。 类在加载时会有额外的开销,但是为Java应用提供了极高的扩展性和灵活性(动态加载和动态链接)。 例如:通过Java自定义加载器,让本地程序运行时,从网络或其他地方加载一个二进制流作为其程序的一部分代码

CodingAnHour 945

深入理解java虚拟机中类加载机制

1.1 概述 虚拟机把描述一个类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成被java虚拟机使用的Java类型。这就是虚拟机的类加载机制。 Calss文件由类加载器加载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息间接调用Calss对象的功能。 编译器会把.java文件编译成.class文件,也就是字节码文件。 1.2 类加载的生命周期 类加载的整个

Deronn的博客 1235

【Java虚拟机类加载机制】

类加载机制

it_xioahua的博客 168

Java虚拟机四:类加载机制

虚拟机把描述Class文件加载到内存,并对数据进行校检、转换解析、初始化,最终形成可以被虚拟机使用的Java类型,将这个过程称之为类的加载机制。 一、类的加载过程 类从被加载到内存开始,会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、和卸载(Unloadi

yulong0809的专栏 907

java虚拟机类加载机制

java源文件经编译后以.class的文件形式存在本地磁盘上,在Class文件中描述的各类信息最终都需要加载到虚拟机中之后才能被运行和使用 类加载机制在jvm中的位置 1.类加载过程 虚拟机把类的数据从.class文件加载到内存,并对class文件中的数据进行校验、转换、解析、初始化等操作后,最终形成可以被虚拟机识别并使用的Class对象的过程就叫做“虚拟机的类加载”,主要包括为3大阶段。 加载->链接->初始化三大阶段,这三个阶段也被称成为类加载子系统 其中链接包含了...

weixin_42073629的博客 139

类加载机制以及类加载器---Java虚拟机

本文生动详细的介绍JVM中类加载机制和类加载器以及双亲委派模型

阿伟のBlog 716

Java虚拟机进阶之路——类加载机制

接口与类的区别:前面六条中的第三条,当一个类被初始化时,要求其父类全部已经被初始化过了,但一个接口在初始化时,并不要求其父接口全部被初始化过,只有在用到父接口的时候(如引用父接口里的常量),才会进行初始化。对于任意一个类,它的唯一性必须由这个类本身和它的类加载器共同确定,比较两个类是否相等,只有在这两个类是由同一个加载器加载进来的情况下才有意义,否则,只要加载器不一样,那类必定不相等。类初始化是类加载的最后一个步骤,在这个阶段Java虚拟机才开始真正执行类中的Java源代码,将主导权交给程序。

m0_60649266的博客 942

深入Java虚拟机之 -- 类加载机制

深入Java虚拟机之 – 类加载机制 文章目录深入Java虚拟机之 -- 类加载机制一、类加载机制二、类加载的时机2.1 加载2.2 验证2.3 准备2.4 解析2.5 初始化三、类加载器四、双亲委派模型 一、类加载机制 虚拟机把描述类的数据从Class文件 (二进制流) 加载到内存,并对数据结构进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是Java的类加载机制...

java_mdzy的博客 382
上一篇: JVM 的垃圾回收算法
下一篇: java中多线程的几种状态
鹤野云间
博客等级 码龄9年 4粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值