Java虚拟机(JVM)

news2024/11/23 1:27:17

Java虚拟机(JVM)

  • 类加载

类加载

Java类加载的过程可以分为以下几个步骤:

  1. 加载(Loading):类加载的第一步是将类的字节码文件加载到内存中。
    • 通过类的全名,全限定名(包括包名和类名)查找并读取字节码文件
    • 解析类的二进制数据流为方法区内的数据结构(Java 类模型)
    • 创建 java.lang.Class 类的实例,表示该类型。作为方法区这个类的各种数据的访问入口

类模板对象,其实就是 Java 类在 JVM 内存中的一个快照,JVM 将从字节码文件中解析出的常量池、类字段、类方法等信息存储到模板中,这样 JVM 在运行期便能通过类模板而获取 Java 类中的任意信息,能够对 Java 类的成员变量进行遍历,也能进行 Java 方法的调用。

  1. 验证(Verification):在验证阶段,JVM会对加载的字节码文件进行验证,确保其符合Java语言规范和安全要求。验证过程包括检查字节码的结构、语义和安全性,以防止恶意代码或错误的字节码被加载。

  2. 准备(Preparation):在准备阶段,JVM会为类的静态变量分配内存,并设置默认初始值。这些静态变量包括静态字段和静态常量。

  3. 解析(Resolution):在解析阶段,JVM会将符号引用转换为直接引用。符号引用是一种符号化的引用,它包含类、方法、字段等的符号名称。解析过程将符号引用解析为具体的内存地址,以便在运行时能够正确访问类、方法或字段。

  4. 初始化(Initialization):在初始化阶段,JVM会执行类的初始化代码,包括静态变量的赋值和静态代码块的执行。类的初始化是在首次使用该类时进行的,它确保类的静态资源被正确初始化,并且只会执行一次。

  5. 使用(Usage):在类加载完成后,类就可以被使用了。可以通过创建对象、调用方法等方式使用类。

需要注意的是,Java类加载是按需加载的,即只有在需要使用某个类时才会进行加载。此外,JVM还提供了类加载器(ClassLoader)机制,允许自定义类加载器来实现特定的加载策略和动态加载类。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++之std::enable_if_t用法(一百五十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

“人工智能的崛起:挑战与机遇并存“

近日,一位美国网络安全高级官员发出警告,称如果科技公司未能自我约束并与政府合作控制人工智能的力量,我们可能面临着巨大的风险。这位官员的言论是在数百名科技领袖和公众人物支持的联合声明之后发表的,该声明将人工智能的存在威…

mysql练习---存储过程/存储函数

创建表并插入数据 字段名 数据类型 主键 外键 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 sch 表内容 id name glass 1 xiaommg glass 1 2 xiaojun glass 2 1、创建一个可以统计表格内记录条数的存储函数 &#…

W波段超外差LO两种倍频链路的比较

W波段(75-110GHz)由于其衰减小,分辨率高,超宽带等优势,受到越来越多的关注。之前由于成本高昂,主要是军事方面的应用。近些年随着Gotmic等厂家毫米波芯片的量产,成本大大降低,已被很…

LRU 缓存

题目链接 LRU 缓存 题目描述 注意点 如果插入操作导致关键字数量超过 capacity ,则应该 逐出 最久未使用的关键字函数 get 和 put 必须以 O(1) 的平均时间复杂度运行 解答思路 如果想以O(1)的速度进行get,则需要将对应的key、value存到map中如果想…

word 公式序号自动按章节排序

1.在普通视图下,使用Alt和F9切换到域代码模式。 普通视图 域代码模式 2.光标放在章节标题最后一个字后面,使用Ctrl和F9添加域代码的大括号 3.在大括号中键入 SEQ ch \h 4.光标放在刚刚的大括号后面,再次按下Ctrl和F9添加域代码的大括号 5.…

SAP MESSAGE ID LB31的问题和解决办法

外协采购订单判退时报错 EA 返回交货(原因)-> 3700006717 /00009 (0000) 1 EA 不正确过帐返回给供应商,错误信息:对所需数量 XXXXXX00003122,1.000 PCS 仍然未清LB 31 搜索到lb31是和批次相关的错误 https://www.michaelmanagement.com/sap-error-mes…

YoloX训练报错“IndexError: list index out of range”

问题描述 在训练Yolox时报错,IndexError: list index out of range 解决方案 在/yolox/data/datasets/voc.py修改第138行 (self._imgpath % self.ids[i]).split(self.root "\\")[1]修改完代码就没问题了,开始训练

48.循环类关键字 for in of while do continue break

我们使用循环的时候很可能出现一些问题,导致语句循环次数过多(几万次甚至几十万次),这个时候请立即点击这里关闭选项卡 如果点关闭选项卡已经关不上了,可以立即结束浏览器进程,windows可以通过任务管理器关闭,linux可以…

华为OD机试真题 Java 实现【MELON的难题】【2023 B卷 100分】,采用动态规划算法,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、动态规划五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明 大家好,我是哪吒。 做技术,我是认真的,立志于打造最权威的华为OD机试真题专栏,帮助那些与我有同样需求的…

【LeetCode热题100】打卡第35天:最小栈相交链表

文章目录 【LeetCode热题100】打卡第35天:最小栈&相交链表⛅前言 最小栈🔒题目🔑题解 相交链表🔒题目🔑题解 【LeetCode热题100】打卡第35天:最小栈&相交链表 ⛅前言 大家好,我是知识汲…

MySQL-分库分表详解(一)

♥️作者:小刘在C站 ♥️个人主页: 小刘主页 ♥️努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️学习两年总结出的运维经验,以及思科模拟器全套网络实验教程。专栏&#xf…

C进阶:指针的进阶(1)

回归 哈喽哈喽大家好呀,我是灰灰快醒醒,时隔一个月又与大家见面了。众所周知,期末考试是中国教育部为大学生专门研发的一款开放式大逃杀游戏,学生需要扮演大难将至而绝望的人类,与小骚书共同完成《期末复习》的任务&a…

【无标题】采用技术外包做项目开发,不得不说的四大注意事项

在进行多项目开发及多个研发供应商团队管理(技术外包管理)时,你是不是也遇到不少问题。 项目管理者A:在项目开发中聘用外包技术团队的过程中,我踩过太多的坑,换过一批又一批的供应商,之前遇到过…

I.MX8MM系统构建 -- 1.系统烧录

硬件环境:米尔 MY8-C8MMX V1.3开发板软件工具:uuu烧录工具 环境准备 硬件环境 将开发板拨码开关调整为SW1(ON,OFF,x,x) SW2(x,x,x,x),按照丝印字体方向向上为OFF,向下为ON。将开发板USB连接到PC给开发板通上12V电源(注意先修改拨…

Django框架之CSRF使用篇

Django框架之CSRF使用篇 目录 全局使用 设置csrf token 表单使用 脚本使用 单独豁免 引入csrf类库 设置单独豁免csrf 单独保护 关闭全局csrf 引入csrf库 设置函数保护 csrf token配置 总结 全局使用 Django项目配置中默认全局使用csrf中间件,注释掉即…

最新Jupyter Notebook(保姆级教程)

Jupyter Notebook介绍 什么是Jupyter Notebook Jupyter Notebook 是一个基于 Web 的交互式计算环境,支持多种编程语言,包括 Python、R、Julia 等。它的主要功能是将代码、文本、数学方程式、可视化和其他相关元素组合在一起,创建一个动态文…

STM32 Proteus仿真语音播报SGP30火灾报警器温度湿度-0072

STM32 Proteus仿真语音播报SGP30火灾报警器温度湿度-0072 Proteus仿真小实验: STM32 Proteus仿真语音播报SGP30火灾报警器温度湿度-0072 功能: 硬件组成:STM32F103C6单片机 0.960LED显示屏DHT11温度湿度电位器模拟SGP30二氧化碳传感器蜂鸣…

Layui实现动态树效果(书籍管理系统左侧下拉列表)

目录 一、前言 1.什么是树形菜单 2.树形菜单的使用场景 二、案例实现 1.需求分析 2.前期准备工作 ①导入依赖 ②工具类 BaseDao(通用增删改查) BuildTree(完成平级数据到父子级的转换) ResponseUtil(将数据转换成json格式进行回显&…

1、Kubernetes 概述和架构

目录 一、基本介绍 二、kubernetes功能和架构 2.1、 概述 2.2 、功能 (1)自动装箱 (2)自我修复(自愈能力) (3)水平扩展 (4)服务发现 (5)滚动更新 &a…