(一)JVM实战——jvm的组成部分详解

news2024/11/19 16:32:36

前言

本节内容是关于java虚拟机JVM组成部分的介绍,通过其组成架构图了解JVM的主要组成部分。

正文

ClassFile:字节码文件

- javac:javac前端编译器将源代码编译成符合jvm规范的.class文件,即字节码文件

- class文件的结构组成:魔术、Class文件版本、常量池、访问标志、类索引、父类索引、接口索引集合、字段表集合、方法表集合、属性表集合

- javap:解析字节码,将字节码文件解析为可读的机器码

类加载器子系统(Class Loader):负责将编译后的Java字节码加载到内存中,并在运行时创建对应的类和对象。类加载器根据类的名称、包名等信息来查找并加载类。

- 类的加载过程

①Loading(装载)阶段:将java类的字节码文件加载到机器内存中并在内存中构建出java类的模版对象(类数据结构),存储在方法区(1.8之前永久代,1.8之后元空间),实例对象在堆中

②Linking(链接)阶段

        -验证:格式检查、语义检查、字节码验证、符号引用验证。

        -准备:为类的静态变量分配内存,并将其初始化为默认值;同时final修饰的static静态变量会在此直接赋值

        -解析:将类、接口、字段和方法的符号引用转为直接引用

③Initialization(初始化)阶段

        - clinit方法为类的静态变量赋正确的初始值(显示赋值给static修饰的变量或者在静态代码块中赋值)

④类是使用阶段

⑤类的卸载阶段

- 类加载器

①引导类加载器Bootstrap ClassLoader:加载JAVA_HOME/jre/lib/rt.jar,没有父加载器,没有继承Class Loader,是系统加载器,C语言实现

②扩展类加载器Extension ClassLoader:加载JAVA_HOME/jre/lib/ext子目录下加载类库,父加载器是Bootstrap ClassLoader

③系统类加载器App ClassLoader:父加载器是扩展类加载器Extension ClassLoader

运行时数据区(Runtime Data Area):也称为Java堆,它是JVM用来存储对象实例和数组的地方。Java堆在JVM启动时就被创建,用于存储动态分配的内存。

方法区(Method Area):用于存储类的结构信息,如类的字段、方法信息、静态变量、常量池等。方法区在JVM启动时被创建,它是各个线程共享的内存区域。

堆(Heap):用于存储对象实例和数组对象。所有通过关键字 new 创建的对象都会在堆上分配内存。堆是Java虚拟机管理的最大的一块内存区域,它在JVM启动时被创建,并被所有线程共享。

程序计数器(Program Counter Register):用于存储当前线程正在执行的Java虚拟机字节码指令的地址。每个线程都有自己独立的程序计数器,用于记录下一条即将执行的指令地址。

本地方法栈(Native Method Stack):类似于虚拟机栈,但是用于执行本地(Native)方法的栈空间。本地方法栈也是线程私有的,存储的是调用本地方法时的状态信息。

虚拟机栈(VM Stack):每个线程在执行Java方法时,都会创建一个对应的栈帧(Stack Frame),用于存储方法的局部变量、操作数栈、动态链接、方法出口等信息。虚拟机栈的大小可以在启动时通过参数进行调整。

执行引擎(Execution Engine):负责执行Java字节码指令。执行引擎有两种主要实现方式:解释器和即时编译器(JIT)。解释器逐条解释字节码指令并执行,而即时编译器将字节码转换成本地机器代码,以提高执行效率。

解释器:逐行解释执行。

即时编译器(Just-In-Time Compiler,JIT):将经过多次解释执行的热点代码(HotSpot)编译成本地机器代码,以提高执行速度。JIT编译器会根据运行时的性能数据进行优化,从而提升程序的执行效率。

JNI(Java Native Interface):允许Java代码与本地代码(如C/C++)进行交互。JNI提供了一组API,使得Java代码可以调用本地方法,以便获得更高的灵活性和性能。

NML(Native Method Libraries):本地方法库,支持本地的一些类库。

结语

本节内容到这里就结束了,我们下期见。。。。。。

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

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

相关文章

Springboot的日常操作技巧

文章目录 1、自定义横幅2、容器刷新后触发方法自定义3、容器启动后触发方法自定义**CommandLineRunner**ApplicationRunner 不定时增加 参考文章 1、自定义横幅 简单就一点你需要把banner.text放到classpath 路径下 ,默认它会找叫做banner的文件,各种格式…

[GXYCTF2019]BabyUpload-BUUTF

题&#xff1a; 步骤&#xff08;先上传木马&#xff0c;在上传.htaccess&#xff09; 准备工作 他过滤了<? ,ph等 准备&#xff1a;一句话木马&#xff0c;.htaccess文件 .htaccess SetHandler application/x-httpd-php //解析为php文件 muma1.jpg<script languag…

刚买的云服务器(阿里云) 玩玩Linux指令 rm -rf /*

rm -rf /* 在Linux中&#xff0c;rm代表的是删除&#xff0c;选项-rf代表的是没有提示信息的递归删除文件夹&#xff0c;/‘代表的是Linux中的根目录。’ * 代表的是所有文件夹&#xff0c;所以该指令的功能就是删除根目录下的所有文件&#xff0c;一会儿肯定服务器崩溃&#x…

使用pytorch构建GAN模型的评估

本文为此系列的第六篇对GAN的评估&#xff0c;上一篇为Controllable GAN。文中使用训练好的分类模型的部分网络提取特征将真实分布与生成分布进行对比来评估模型的好坏&#xff0c;若有不懂的无监督知识点可以看本系列第一篇。 原理 1.评估模型的指标 一般来说&#xff0c;我们…

多级嵌套对象数组:根据最里层id找出它所属的每层父级,适用于树形数据格式

文章目录 需求分析 需求 已知一个树形格式数据如下&#xff1a; // 示例数据 const data [{"id": "1","parentId": null,"children": [{"id": "1.1","parentId": "1","children"…

粒子群算法与优化储能策略python实践

粒子群优化算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;, 是1995年J. Kennedy博士和R. C. Eberhart博士一起提出的&#xff0c;它是源于对鸟群捕食行为的研究。粒子群优化算法的基本核心是利用群体中的个体对信息的共享从而使得整个群体的运动…

Wireshark数据包分析入门

Wireshark数据包分析 1. 网络协议基础1.1. 应传网数物&#xff08;应表会传网数物&#xff09; 2. 三次握手2.1. 第一次握手2.2. 第二次握手2.3. 第三次握手2.4. 三次握手后流量特征 3. 第一层---物理层&#xff08;以太网&#xff09;4. 第二层---数据链路层&#xff08;PPP L…

139GB,台北倾斜摄影OSGB数据V0.1版

本月初发布了谷歌倾斜摄影数据OSGB转换工具V0.2版(更新&#xff01;谷歌倾斜摄影转换生成OSGB瓦片V0.2版),并免费分享了基于V0.2版转换工具生产的澳门地区OSGB数据(首发&#xff01;澳门地区OSGB数据V0.2版免费分享),V0.2版本在生产速度、显示效率和OSGB数据轻量化方面进行了优…

软考:高级系统架构师案例必备概念

根据2013年-2023年真题整理 必背案例概念 软件架构风格 软件架构风格是指描述特定软件系统组织方式的惯用模式。 组织方式描述了系统的组成构件和这些构件的组织方式。 惯用模式则反映众多系统共有的结构和语义。 架构风险 架构风险是指架构设计中潜在的、存在问题的架构…

零碳家庭 “光”的力量

有行业专家乐观预测&#xff0c;在供给充足、基础设施建设与时俱进的情况下&#xff0c;2025年&#xff0c;我国新能源汽车市场的占有率将会达到50%&#xff0c;2030年更有望突破90%的大关。为了方便新能源汽车的出行&#xff0c;在家中安装一个智能充电桩是越来越多驾驶者的选…

计算机网络---第十一天

生成树协议 stp作用&#xff1a; 作用&#xff1a;stp用于解决二层环路问题。 BPDU&#xff1a; 含义&#xff1a;桥协议数据单元&#xff0c;用于传递stp协议相关报文 分类&#xff1a;配置bpdu---用于传递stp的配置信息 tcn bpdu---用于通告拓扑变更信息 包含信息&…

基于SpringBoot的智慧物业管理设计与实现论文

摘  要 随着我国发展和城市开发&#xff0c;物业管理已形成规模&#xff0c;其效益也越来越明显。在经济效益对地方政府而言&#xff0c;主要体现为&#xff1a;减少了大量的财政补贴&#xff0c;对住宅区开发企业而言&#xff0c;能提高物业市场竞争力&#xff0c;使开发企…

系统思考—啤酒游戏

最近有不少的合作伙伴来询问我啤酒游戏这个来自于MIT&#xff08;麻省理工学院&#xff09;经典的沙盘&#xff0c;上周刚刚结束Midea旗下的一家公司市场运营部《啤酒游戏沙盘-应对动态性复杂的系统思考智慧》的课程。 参与这次沙盘体验的团队成员深刻体会到了全局思考的重要性…

dtc、fdtdump、fdtget、fdtput、convert-dtsv0

目录标题 1. dtc&#xff08;Device Tree Compiler&#xff09;2. fdtdump3. fdtget4. fdtput5. convert-dtsv0 dtc、fdtdump、fdtget、fdtput、convert-dtsv0这些工具都与Linux设备树&#xff08;Device Tree&#xff09;的处理有关。 设备树是一种数据结构&#xff0c;用于描…

JavaSE学习文档(上)

JavaSE学习文档 第一章 Java概述1.2 计算机编程语言1.3 Java语言版本概述1.4 Java语言分类1.5 JDK,JRE,JVM的关系1.6 JDK安装1.7 DOS命令1.8 Java程序执行过程1.9 编写HelloWorld1.10 常见错误1.11 编写程序时要注意的点 第二章 Java基础语法2.1 Java中的注释文档注释 2.2 关键…

免杀技术之白加黑的攻击防御

一、介绍 1. 什么是白加黑 通俗的讲白加黑中的白就是指被杀软列入到可信任列表中的文件。比如说微软自带的系统文件或者一些有有效证书签名的文件,什么是微软文件&#xff0c;或者什么是有效签名文件在后面我们会提到他的辨别方法。黑就是指我们自己的文件&#xff0c;没有有…

【办公类-26-01】20240422 UIBOT网络教研(自动登录并退出多个账号,半自动半人工)

作品展示&#xff1a; 背景需求&#xff1a; 每学期有多次网络教研 因为我有历任搭档的进修编号和登录密码&#xff0c; 所以每次学习时&#xff0c;我会把历任搭档的任务也批量完成。 但是每次登录都要从EXCEL里复制一位老师的“进修编号”“密码”&#xff0c;还要点击多次…

53.基于微信小程序与SpringBoot的戏曲文化系统设计与实现(项目 + 论文)

项目介绍 本站采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的戏曲文化系统设计与实现管理工作系统化、规范化。 技术选型 后端:…

最快2周录用!多领域EI,征稿范围广!各指标优秀!

计算机工程类EI&#xff08;最快2周录用&#xff09; 【期刊简介】最新EI期刊目录内源刊 【检索情况】EI&Scopus双检 【版面情况】仅10篇版面 【年发文量】60篇左右 【国人占比】约13% 【收录年份】2009年被EI数据库收录 【审稿周期】预计1个月左右录用 【征稿领域…

aqs 条件队列和同步队列、独占模式和共享模式

同步/条件队列 先上代码 import java.util.LinkedList; import java.util.Queue; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock;public class ProducerConsumerExample {private static final int CAPACITY 5;private fi…