JVM加载class文件的原理机制

news/2024/5/19 20:25:56/文章来源:https://blog.csdn.net/m0_50744075/article/details/127349851

JVM加载class文件的原理机制

JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的;
当Java程序需要使用某个类时,JVM会确 保这个类已经被加载、连接(验证、准备和解析)和初始化。
类的加载是指把类的.class文件中的数据 读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。
加载 完成后,Class对象还不完整,所以此时的类还不可用。
当类被加载后就进入连接阶段,这一阶段包括 验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步 骤。
最后JVM对类进行初始化,包括:
1)如果类存在直接的父类并且这个类还没有被初始化,那么就先 初始化父类;
2)如果类中存在初始化语句,就依次执行这些初始化语句。

  1. Bootstrap:一般用本地代码实现,负责加载JVM基础核心类库(rt.jar);
  2. Extension:从java.ext.dirs系统属性所指定的目录中加载类库,它的父加载器是Bootstrap;
  3. System:又叫应用类加载器,其父类是Extension。它是应用最广泛的类加载器。它从环境变量
  4. classpath或者系统属性java.class.path所指定的目录中记载类,是用户自定义加载器的默认父加 载器

类加载器(ClassLoader)

是一个重要的 Java运行时系统组件,它负责在运行时查找和装入类文件中的类

类的生命周期

类的生命周期包括这几个部分,加载、连接、初始化、使用和卸载,其中前三部是类的加载的过程
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_401941.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络中各个隐藏层,深度神经网络隐藏层数

1、神经网络的隐含层节点数怎么设置啊?比如要设置18层隐含节点数!跪求,工作急用! 隐层一般是一层或两层,很少会采用三层以上,至少隐层的节点数确定,一般有以下几种方法:1、有经验的…

【ArchSummit】通过ArchSummit 全球架构师峰会对企业数字化转型的思考

前言 📫 作者简介:小明java问道之路,专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &a…

生命在于学习——Socket编程(偏安全方面)

本篇文章仅用于学习记录和交流,不得用于其他违规用途,产生的不良后果,自己负责。 一、Socket介绍 首先socket (套接字) 是工作在应用层和传输层之间一个抽像层 , 为什么要有他呢 ? 虽然我们已经有了ipport可以和世界上任意一台计算机上的软…

chainlink 小实战 web3 “捐助我”项目合约及前端交互——关于 《Patrick web3 course Lesson 7-8 》课程代码中文详解

FundMe lesson 的 示例 本质上是一个合约上对 eth 接收和发送的演示,但这个演示增加了前端 ethers 的交互,以及对 chainlink 预言机喂价的使用。 总体来说是一些 Defi 项目上的某一块功能的缩影,不过总体来说还是挺简单的。 若不会 chainli…

(附源码)计算机毕业设计SSM基于JAVA人事管理系统

(附源码)计算机毕业设计SSM基于JAVA人事管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

Android系统10 RK3399 init进程启动(四十二) init.rc文件解析逻辑

配套系列教学视频链接: 安卓系列教程之ROM系统开发-百问100ask 说明 系统:Android10.0 设备: FireFly RK3399 (ROC-RK3399-PC-PLUS) 前言 Android init启动的时候会解析init.rc, 当然还有很多其他rc文…

DPR和REALM论文笔记

DPR(2020 EMNLP) 该论文的模型主要是一个双塔结构如下所示: 整个模型的训练数据D包含m个例子,其中每个例子由一个问题qiq_iqi​、一个相关段落pip_i^pi​、n个不相关段落pi,1−,⋯,pi,n−p_{i,1}^-,\cdots,p_{i,n}^-pi,1−​,⋯,pi,n−​ D{⟨qi,pi,pi,…

JUC-3.三大辅助类/阻塞队列/forkjoin

目录 一、三大辅助类 1.1 CountDownLatch 1.2 CyclicBarrier 1.3 Semaphore 二、阻塞队列 2.1 概念 2.2 常用的阻塞队列 三、forkjoin 一、三大辅助类 JUC 中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过 多时 Lock 锁的频繁操作。…

【ASM】字节码操作 转换已有的类 Class Transformation 原理 【重要】

文章目录 1.概述2. Class-Reader/Visitor/Writer2.1建立联系2.2执行顺序2.3执行顺序的代码演示3.串联的Field/MethodVisitors4. Class TransformationJ4F5.总结1.概述 上-篇文章:【ASM】字节码操作 转换已有的类 ClassReader 删除方法 添加方法 2. Class-Reader/Visitor/Wri…

(附源码)计算机毕业设计SSM基于Java家庭财务管理系统

(附源码)计算机毕业设计SSM基于Java家庭财务管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技…

《视觉SLAM十四讲》 编译报错问题汇总 Ubuntu20.04

Ubuntu 20虚拟机环境安装 高翔原视频是ubuntu14.04,看了一下,有很多库都有兼容问题,所以初步按这个Ubuntu 20装: 这个教程是ubuntu20的,用ubuntu14会不兼容,比如qt5.12.12无法安装等(需要5.12.3&#xff0…

Web3.0游戏是否还有未来?

当前Web3.0领域已经大规模减速。 对大多数投资者来说,Web3.0游戏是一个炒作噱头,他们更关心投资回报,不那么在意真正交付给玩家的游戏产品,游戏的中长期运营也就失去了保障,今年以来的各种Web3.0游戏的遭遇证明了这一…

postgresql源码学习(十九)—— MVCC④-可见性判断 HeapTupleSatisfiesMVCC函数

拖了好久总算把这一节啃完了...做个记录,有一部分判断条件的案例还没想到,集齐之后可能会再加一篇案例。 一、 可见性判断 回顾一下前面提到的SNAPSHOT_MVCC类型快照的可见性判断条件: postgresql源码学习(十七)—— …

SQL学习1---表的创建和修改,数据的增删改

目录 一:SQL使用规范 二:DDL(Data Definition Language,数据定义语言) 三:DML(Data Manipulation Language,数据操纵语言) 四:创建和操纵表 五:表的数据插入…

树莓派(一)python接口RPi.GPIO介绍

​ 目录 导入 RPi.GPIO 模块: 引脚编号 设置channel 设置多个通道 获取输入 设置输出 输出到多个通道 清理 RPi 板信息和 RPi.GPIO 版本 导入 RPi.GPIO 模块: try:import RPi.GPIO as GPIO except RuntimeError:print("Error importing RPi.GPI…

客户管理系统(SSM版):bs_typeahead动态的自动补全文本框的内容

客户需求: 用户在创建交易页面,在客户名称文本框输入信息时,可以根据输入的关键字,模糊查找数据库中的客户名称,并把模糊查找的所有的客户名称以类似于下拉框的形式显示在客户名称文本框下方,用户可以从中…

Python系列-Django-Ninja

Python系列-Django-Ninja 适用对象:有一定python和django基础,对此技术感兴趣,或者想快速尝试、实现效果的。 原则: 不重复造轮子实用为主,效果为主官网是最好的教程,其它只是辅助 ninja介绍 Django Ni…

【Pytorch教程】08-如何使用PyTorch训练简单CIFAR10图片分类器(保姆级)

本期目录1. 背景1.1 各领域常用库1.2 CIFAR10简介2. 数据集2.1 加载并正则化CIFAR10数据集2.2 训练集可视化3. 定义卷积神经网络4. 定义损失函数和优化器5. 训练模型6. 保存模型参数7. 测试7.1 测试集可视化7.2 加载模型参数8. 多卡训练1. 背景 1.1 各领域常用库 在深度学习的实…

asp.net在线医疗系统VS开发sqlserver数据库web结构c#编程计算机网页项目

一、源码特点 ASP.NET 在线医疗系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言开发。 asp.net在线医疗系统VS开发sqlserver…

叹教育之“不易”

小孩学校小学搞了个电子百拼活动,一套东西套件,一些电阻电容,三极管,语音芯片,加了塑料壳,6百多。一个电阻单独买一下要9块5毛,还不包邮。怎么说呢。。。感觉回到了十几年前去电子市场&#xff…