JVM数据结构一览及分析

news2024/11/18 0:37:26

JVM总体一张图:

整体上来看:类文件从类加载子系统,加载完成之后,主要存放在方法区(JRockit和H9没有方法区,这里指的是HotSpot)。运行时的数据主要是存放在运行时数据区,代码的解释编译优化以及垃圾收集,都是在执行引擎中。本地方法是指Native方法,也就是C/C++编写的方法。

类加载子系统

类文件首先需要经过类加载子系统,进行加载,进类信息等加载到运行时数据区。

在类加载子系统中有以下三个阶段操作:

  • 加载

  • 链接

  • 初始化

其中加载的时候,有三种类加载器:

  • Bootstrap ClassLoader:引导类加载器,主要加载JDK里面的核心类

  • Extension ClassLoader:拓展类加载器

  • Application ClassLoader:应用加载器

而链接也分为3个阶段,主要是:

  • 验证

  • 链接

  • 解析

运行时数据区

经过类加载子系统加载之后,进入运行时数据区,运行时区域主要分为:

  • 线程私有:

    • 程序计数器:Program Count Register,线程私有,没有垃圾回收

    • 虚拟机栈:VM Stack,线程私有,没有垃圾回收

    • 本地方法栈:Native Method Stack,线程私有,没有垃圾回收

  • 线程共享:

    • 方法区:Method Area,以HotSpot为例,JDK1.8后元空间取代方法区,有垃圾回收。

    • 堆:Heap,垃圾回收最重要的地方。

虚拟机栈,每一个线程有一份,每一个线程的虚拟机栈里面,存放的是一个个栈帧,每一个栈帧表示一个方法调用。

PC寄存器,同样是每一个线程有一份,不同线程之间执行到何处,互不干扰。

执行引擎

执行引擎里面可以逐行解释执行,也可以编译成机器指令直接执行,主要包括:

  • 解释器

  • 即时编译器:即时编译器中包括了中间代码生成器,代码优化器,目标代码生成器等。

  • 垃圾收集器

解释器,需要逐行解释执行,效率低下。譬如:如果循环两千次,循环体很大,每次执行都需要解释执行。

JIT 编译器,除了可以直接全部即时编译,还可以统计出那些代码执行频率比较高,这部分代码就是热点代码,这种技术叫做热点代码探测技术JIT 编译器会将热点代码,提前编译成为机器指令,放在方法区缓存起来,下次执行到的时候,不需要解释执行,而是直接运行机器指令。

即时编译器的执行效率很高,为什么不将它全部提前编译好缓存起来呢?

  • 全部提前编译,首次启动响应速度慢,会有卡顿的感觉,因为编译需要大量时间。(主要原因)

  • 缓存代码,需要放在方法区,占用内存空间,容易溢出。

  • 翻译成为机器指令,则这部分缓存的 CodeCache 是不能够直接跨平台,因为不同环境的机器指令是不大一样的,只能每次运行前就全部编译。

如果需要写一个虚拟机,那么需要考虑的重要两部分是:类加载子系统执行引擎

类加载子系统负责将类信息按照规定,加载到运行时数据区,而执行引擎主要负责对代码解释执行或者编译成二进制缓存起来,进行执行。

 

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

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

相关文章

✿✿✿JavaScript --- 常见样式案例

目录 1.下拉框复选框单选框的事件样式 和 禁止喜欢中文字与鼠标右键 2.点击按钮后样式发生变化 3.表格追随鼠标更换颜色 4.点击更换背景 5.点击不同的选择栏,内容展示在一个板块内 6.排他思想,许多按钮,点击谁谁就有样式 7.按钮全选反…

微机原理接口

目录 接口的基本概念 什么是接口?(背会) 接口电路的功能?(背会2019年 ) 接口电路基本结构 什么是端口 (背) 接口的控制原理 数据的传送方式(知道并行串行的特点就可以) 并行传…

校园二手交易WEB

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 方达影院系统总共分两个模块,用户模块和管理员模块, 用户模块:登录和注册功能&#…

【Pytorch_Geometric】(GCN)基本使用:数据集与邻接矩阵格式,图形(点)的可视化展示

声明:仅学习使用~ 目录 过程记录1、Graph Neural Networks2、数据集描述3、edge_index3、模型定义与训练方法4、输出特征展示5、训练模型(半监督,semi-supervised)过程记录 1、Graph Neural Networks 致力于解决不规则数据结构(图像和文本相对格式都固定,但是社交网络与…

陪诊系统app开发,一个应用可切换不同身份

随着人口老龄化,年轻人工作压力大,经常加班,或在外地定居,出差等原因,没时间陪长辈。对于一些有慢性疾病的困扰,需要长期陪伴而延伸出来的一个新型行业-陪诊。陪诊职业出现就被人认可是因为人们对这个职业有…

什么是多模态深度学习?有哪些应用场景?

深度多模态学习能够更全面地理解数据,在准确性和效率上均有大幅提升。但首先,什么是多模态深度学习?它有哪些应用场景?本文将从定义、应用与前景三个角度来回答这两个问题。随着深度神经网络的发展,深度学习也逐渐向多…

基于事件触发的二阶多智能体领导跟随一致性

【无限嚣张(菜菜)】:hello您好,我是菜菜,很高兴您能来访我的博客,我是一名爱好编程学习研究的菜菜,每天分享自己的学习,想法,博客来源与自己的学习项目以及编程中遇到问题…

基于java+springboot的人事招聘信息网站-计算机毕业设计

运行环境 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven 项目介绍 在这个计算…

教你一招,解决头疼的DCOM配置问题

一、背景 OPC通信技术是工业通信领域中一套广为流行的方案,能够帮助大量的使用不同通信协议的下层现场设备数据与上位机应用程序进行交互。实现OPC通信需要基于Winodows上的COM/DCOM技术,只有在服务器和客户端都进行DCOM配置,开放相应的权限…

【矩阵论】6. 范数理论——非负/正矩阵

6.5 非负/正矩阵 6.5.1 定义 a. 非负/正矩阵定义 一个实矩阵 A(aij)∈RmnA(a_{ij})\in R^{m\times n}A(aij​)∈Rmn 若对每一 iii 和 jjj ,aij≥0a_{ij}\ge 0aij​≥0 ,则称A是非负矩阵,A≥0A\ge 0A≥0 若对每一 iii 和 jjj ,…

论文浅尝 | Relational schema optimization for RDF-based KGs

笔记整理:郑国鹏,天津大学硕士链接: https://www.sciencedirect.com/science/article/pii/S0306437921000223动机特征集(CS)根据与其主题节点相关的属性集来组织RDF三元组。它可以捕捉到RDF数据的隐含模式。虽然大多数基于CS的方法…

3、面向对象

文章目录3、面向对象3.1 介绍3.1.1 基本语法3.1.2 案例分析3.2 类和对象3.2.1 类3.2.1 对象3.3 属性3.4 方法3.5 方法参数3.6 传值方式3.7 静态3.8 静态代码块3.9 包3.10 import3.11 构造方法3.12 继承3.13 super、this3.14 继承、构造方法3.15 多态3.16 方法重载3.17 方法重载…

获奖 | APT检测能力再获认可,创宇猎幽荣获“金帽子”年度优秀安全产品奖

近日,2022网络安全金帽子年度评选活动揭晓,创宇猎幽APT流量监测系统获年度优秀安全产品奖。“金帽子”评选推动行业发展创宇猎幽获年度优秀安全产品奖“金帽子”年度评选活动旨在推动网络安全行业的健康发展,让更多的普通大众真正了解和认识网…

【技术应用】java接口幂等性实现方案

【技术应用】java接口幂等性实现方案一、前言二、幂等性三、幂等设计思路四、实现代码五、总结一、前言 最近在做一个线上的项目,与之前内网项目还是有很多差别的,尤其在安全性和并发性的处理上,要多做一些措施,第一步就是接口的…

Java HashSet

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。 HashSet 允许有 null 值。 HashSet 是无序的,即不会记录插入的顺序。 HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必…

流量与技术双重加持,小游戏迎来高速增长周期

2017 年 12 月 28 日,微信小游戏正式上线。“跳一跳”刷爆了微信朋友圈,随后欢乐斗地主、坦克大战、纪念碑谷、拳皇等经典游戏纷纷出现在小游戏平台上。在过去的5年间,各大平台纷纷紧跟微信的步伐,纷纷入局小游戏,当前…

【CSS】速查复习background相关所有属性(上)

前言 background是一种 CSS 简写属性,用于一次性集中定义一个或多个背景属性,其中的属性有以下这些: background-clip background-color background-image background-origin background-size background-attachment background-blend…

window.location.href跳转页面后拿不到cookie

场景 最近在改其他同事写的系统时,我只改了个文案,但是打包部署上去发现其他地方出现了问题。原因可能是因为这个问题被同事修复过但是没有把代码提交,我拉取的时候这个问题还是存在的。最终拿同事之前打的包与我打的最新包对比,…

Java项目:SpringBoot+Mybatis+layui的学生成绩管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 功能介绍 SpringBoot学生成绩管理系统。主要分老师与学生两个角色。 其中,教师角色包含以下功能: 教师登录,学生信息管理,成绩管…

ETHERCAT从站设计与FOC伺服马达电流环控制

ETHERCAT从站开发方案介绍-含ET9300对比 EtherCAT一般设计要求(针对uCESC的方案): 硬件上:主控制器uCESC(可选各供应商的EtherCAT从站控制器) 操作系统:无特殊要求,根据产品性能决…