最新要闻
- 全球限量5000台!ThinkPad X1 Carbon 30周年纪念版即将上市
- 最新资讯:老马也失蹄 吞剑大师嘴插5把剑出意外被刺穿内脏:宣布收山
- NASA毅力号火星车和国际空间站上的SSD:出自群联之手
- 网友不知情下话费暴涨2倍至99元 客服:一般会提前通知
- 《阿凡达》为何时隔13年推出续作?卡梅隆回应:光剧本就写了4版
- 全球时讯:纯电越野车真香!奇瑞也来参一脚:邀网友共创、最多奖励5万
- 每日视讯:一天1500元 索赔77万元代步车费用!博主曝特斯拉“精彩”上诉状
- 黄牛栽了!急于出手RTX 4080
- 两轮电动车在印度卷起来了:5年/6万公里质保、1年免费充电
- 天天短讯!女子连续服用6片感冒药致肝衰竭 专家提醒:药不能随便吃
- 男子被狗舔伤口发视频炫耀狗子贴心:听网友劝后打狂犬疫苗
- 全球播报:乐视诉清华大学获赔:内网提供电影下载 7年前就关停了
- 国服腾讯、网易等谁来代理?暴雪《暗黑4》发售时间曝光:容量80GB
- 环球动态:男子醉驾撞树想溜 爱车自动报警 并发送了定位
- 当前热点-灵感来自微信:微软计划开发一站式“超级应用”
- 环球即时看!惊险!SUV被货车顶上铁轨 火车驶来瞬间逃离
广告
手机
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
票房这么火爆,如何请视障人士“看”一场电影?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
- 票房这么火爆,如何请视障人士“看”一场电影?
家电
当前短讯!12 虚拟机字节码执行引擎_字节码执行机制
- 1 解释执行与编译执行
- 2 基于栈/寄存器的指令集
- 3 解释器执行字节码过程
- 4 虚拟机进行数据运算的一般过程
1 解释执行与编译执行
- 解释执行:通过解释器执行
- 编译执行:通过即时编译器产生本地代码(二进制代码)执行
- 虚拟机的执行引擎支持以上两种方式
java语言的编译及执行过程:
C语言的编译过程:
(资料图片仅供参考)
2 基于栈/寄存器的指令集
- 基于栈的指令集架构:指令不带参数,使用操作数栈中的数据作为指令的运算输入,指令的运算结果也存储在操作数栈中。依赖操作数栈进行工作
- 基于寄存器的指令集架构:X-86指令集,指令带有操作数,依赖寄存器计算和存储。
- 字节码指令属于基于栈的指令集架构(部分指令会带有参数)
温馨提示:关于x86指令集在《深入理解计算机操作系统》读书笔记系列中有详细介绍
以计算1+1作为例子,体现两种指令集的差异
基于栈的指令集:
iconst_1 iconst_1 iadd istore_0
- 两条iconst_1指令连续把两个常量1压入栈
- iadd指令把栈顶的两个值出栈、相加,然后把结果放回栈顶
- 最后istore_0把栈顶的值放到局部变量表的第0个变量槽中
基于寄存器的指令集:
mov eax, 1 add eax, 1
- mov指令将立即数1放入eax寄存器
- add指令将eax寄存器的值加1,并把结果保存在eax寄存器中
栈的指令集的优缺点:
- 可移植,因为它不依赖寄存器(寄存器一般跟硬件体系挂钩)
- 指令相对更加简洁(寄存器指令集中还需要存放参数)
- 编译器实现更加简单(不需要考虑空间分配的问题,所需空间都在栈上操作)
- 缺点1:栈实现在内存中,比起寄存器的访存速度更慢。
- 缺点2:指令数量比寄存器架构来得更多(出栈、入栈操作本身就产生了相当大量的指令)
3 解释器执行字节码过程
例子说明Java虚拟机如何执行字节码
public class ByteCodeTest_3 { public int calc() { int a = 100; int b = 200; int c = 300; return (a + b) * c; }}
javac编译后的字节码完整内容如下:
minnesota-book:test howing.zhang$ javap -verbose ./ByteCodeTest_3.classClassfile /Users/howing.zhang/hy-Data/Work/study/project/mconcurrency/src/main/java/com/minnesota/practice/test/ByteCodeTest_3.class Last modified 2022-12-6; size 310 bytes MD5 checksum 542ed788c7ea7a11f0c7cd0cf046c2a6 Compiled from "ByteCodeTest_3.java"public class com.minnesota.practice.test.ByteCodeTest_3 minor version: 0 major version: 52 flags: ACC_PUBLIC, ACC_SUPERConstant pool: #1 = Methodref #3.#12 // java/lang/Object."":()V #2 = Class #13 // com/minnesota/practice/test/ByteCodeTest_3 #3 = Class #14 // java/lang/Object #4 = Utf8 #5 = Utf8 ()V #6 = Utf8 Code #7 = Utf8 LineNumberTable #8 = Utf8 calc #9 = Utf8 ()I #10 = Utf8 SourceFile #11 = Utf8 ByteCodeTest_3.java #12 = NameAndType #4:#5 // "":()V #13 = Utf8 com/minnesota/practice/test/ByteCodeTest_3 #14 = Utf8 java/lang/Object{ public com.minnesota.practice.test.ByteCodeTest_3(); descriptor: ()V flags: ACC_PUBLIC Code: stack=1, locals=1, args_size=1 0: aload_0 1: invokespecial #1 // Method java/lang/Object."":()V 4: return LineNumberTable: line 3: 0 public int calc(); descriptor: ()I flags: ACC_PUBLIC Code: stack=2, locals=4, args_size=1 0: bipush 100 2: istore_1 3: sipush 200 6: istore_2 7: sipush 300 10: istore_3 11: iload_1 12: iload_2 13: iadd 14: iload_3 15: imul 16: ireturn LineNumberTable: line 5: 0 line 6: 3 line 7: 7 line 8: 11}SourceFile: "ByteCodeTest_3.java"
用图例来说明执行calc()方法过程中,操作数栈和局部变量表的变化情况:
由上图可知,calc()方法运行的栈帧结构中:
- 操作数栈的最大深度为2
- 本地变量表的变量槽最大使用数量为4
- 方法参数的个数为1,它是隐藏参数this
- 验证过程也满足:“stack=2, locals=4, args_size=1”该字节码内容
4 虚拟机进行数据运算的一般过程
java虚拟机进行数据运算,没有异常的情况下,遵从以下步骤:
- 先入栈:将常量或变量值写入操作数栈,push指令集负责。
- 出栈:将操作数栈数据保存到常量表,store指令集负责
- 入栈:数据从常量表复制操作数栈,为下一步的运算进行准备。load指令集负责
- 运算:对栈内(从栈顶开始寻找)数据进行运算,并把结果重新存入栈顶。运算指令集负责
- 返回:把计算结果(栈顶数据)返回给方法调用者。
当前短讯!12 虚拟机字节码执行引擎_字节码执行机制
CompletableFuture源码解析
全球限量5000台!ThinkPad X1 Carbon 30周年纪念版即将上市
最新资讯:老马也失蹄 吞剑大师嘴插5把剑出意外被刺穿内脏:宣布收山
NASA毅力号火星车和国际空间站上的SSD:出自群联之手
网友不知情下话费暴涨2倍至99元 客服:一般会提前通知
每日快讯!Redis配置、优化及相关命令
《阿凡达》为何时隔13年推出续作?卡梅隆回应:光剧本就写了4版
全球时讯:纯电越野车真香!奇瑞也来参一脚:邀网友共创、最多奖励5万
每日视讯:一天1500元 索赔77万元代步车费用!博主曝特斯拉“精彩”上诉状
黄牛栽了!急于出手RTX 4080
两轮电动车在印度卷起来了:5年/6万公里质保、1年免费充电
Power BI 15 DAY
【高精密时钟】NTP网络校时服务器在WIN平台下调试步骤
微头条丨Chatgpt注册全流程教程
KMP算法详解-字符串匹配
焦点信息:精美的web前端源码的特效
天天短讯!女子连续服用6片感冒药致肝衰竭 专家提醒:药不能随便吃
男子被狗舔伤口发视频炫耀狗子贴心:听网友劝后打狂犬疫苗
全球播报:乐视诉清华大学获赔:内网提供电影下载 7年前就关停了
国服腾讯、网易等谁来代理?暴雪《暗黑4》发售时间曝光:容量80GB
环球动态:男子醉驾撞树想溜 爱车自动报警 并发送了定位
全球热点!JS设计模式 之 发布-订阅模式
最近沉迷Redis网络模型,无法自拔!终于知道Redis为啥这么快了
热点聚焦:行为管理(锐捷行业网关篇)
全球时讯:文盘Rust -- r2d2 实现redis连接池
前端精准测试实践
世界速递!JavaScript中 FileReader 对象详解
【世界报资讯】大数据-数据仓库-实时数仓架构分析
热头条丨JAVA8 函数式编程(1)- Lambda表达式
易基因|m6A去甲基化酶ALKBH5通过降低PHF20 mRNA甲基化抑制结直肠癌进展 | 肿瘤研究
焦点日报:火山引擎 DataTester:如何用 A/B 测试做产品增长?
WTM+InfluxDB时序数据库数据查询并放到DataTable中
中科慧政 & JNPF :全面开启智慧政务,灵活满足政务办公需求
【焦点热闻】南墙WAF-最好的免费Web应用防火墙
天天关注:高光时刻 | 方正璞华联合开发的「人力资源法律服务共享平台」在创新创业大赛中获奖
全球新消息丨95年属猪的2019年运势
【环球热闻】绳责的意思(绳责)
天天动态:水滴筹标题范文(水滴筹标题怎么写)
今头条!应用昆虫学(应用昆虫学报)
环球头条:工厂找哪个网站?
焦点信息:促排卵期间注意哪些事项(促排卵期间注意事项)
天天资讯:越南旅游签证办理流程及费用(越南旅游签证办理流程)
全球快报:空鼻症是什么样(空鼻症是什么病)
【天天新视野】电脑桌面怎么恢复到原来的样子(电脑桌面怎么恢复到原来的样子)
每日信息:闲鱼卖二手
微资讯!西藏万隆虫草鹿鞭王
环球观焦点:77电玩城(77dizhi)
热头条丨低温性能革命性进步!宁德时代:钠电池有望装车500公里续航车型
当前播报:非典是哪一年一共死多少人(非典是哪一年)
天天热讯:空调显示屏上显示df是什么意思(空调运行中显示屏出现字母df是什么意思)
全球报道:我国现存新能源汽车相关企业56.8万家,仅2021年新增17万家
全球要闻:日本电子巨头罗姆将量产下一代半导体:提高用电效率、增加电动车续航里程
环球今日报丨传感器和处理器如何打造更智能、更自主的机器人?
世界即时:如何实现工业自动化?传感器对于工业自动化有什么样的意义
天天新动态:工业自动化如何实现?
当前焦点!使用cpolar(内网穿透)最低成本搭建网站
如何在Windows AD域中驻留ACL后门
当前热点-灵感来自微信:微软计划开发一站式“超级应用”
环球即时看!惊险!SUV被货车顶上铁轨 火车驶来瞬间逃离
玩家们都嫌太贵!曝英伟达考虑将RTX 4080降价
世界讯息:AI生成裸照谁之过?真相恐怕和你想的不一样
3小时超值!《阿凡达2》电影票价普遍低于50元 IMAX版80元
Redis 的 keys 命令你知道有多慢吗?
“抽烟哥”红到国外 田协紧急倡议应积极正向:全马冲进3个半小时是狠人
世界百事通!RTX 4080全球销售疲软:太贵了我再等等
《阿凡达2》伦敦首映式
惊险一幕!后车记录仪拍下特斯拉失控瞬间 网友分析司机被特斯拉辅助“救”两次
今日大雪:仲冬时节正式开始 全国大部气温回升雨雪稀少
每日观察!《原神》3.3版本今日上线:风元素新角色来了 还有原石可领
葡萄牙6-1大胜瑞士 C罗31场首发终结:加练千个西班牙点球大战仍出局 连续三届无缘8强
看齐QQ音乐?Apple Music新功能来了:支持iPhone、iPad唱卡拉OK
安兔兔11月iOS设备好评榜出炉:iPhone 14全系未上榜
SpringBoot构建RESTful风格应用
环球速讯:Kubernetes单机创建MySQL+Tomcat演示程序:《Kubernetes权威指南》第一章demo报错踩坑
全球最新:npm或者yarn安装sharp太慢、失败等问题
世界今亮点!不止是中药 连花清瘟新专利来了 可用于制作口罩、内衣、防护服等
时讯:200元耳机降噪效果比肩2000元!贝壳王子MO3 2代上手:同价位天花板
全国单日票房一度超4000万元:《阿凡达2》万众期待
热门:快升级5G!明年4G网速体验更糟糕:原因很无解
54年了!波音747飞机正式停产 一记录保持37年
焦点播报:MAUI新生3.4-深入理解XAML:数据模板DataTemplate
环球观热点:生成器函数
当前视点!Kubernetes configmap 笔记
画家要失业了?PS母公司Adobe开卖AI图片:侵权赔偿也自己扛
为什么海底火山不会被海水浇灭?
Javascript-极速入门指南-2-BOM与DOM操作-jQuery简介
54个CSS重难点整理,12-24篇,进阶高薪必需要掌握的知识点
国产CPU与国产OS联合 阿里平头哥加入openKylin社区
男子iPhone 13 Pro不到三个月自燃 法院:商品不符合质量要求 可以换新
全球热点!java创建线程的唯一方式
第一百一十篇:内存泄漏和垃圾回收(JS)
新资讯:《阿凡达2》获知名制作人小岛秀夫好评点赞:能够让人焕发激情
当前滚动:进军PC配件!一加将推出旗下首款机械键盘
《巫师3》次时代版“史诗升级”:官方Mod工具终于来了
AMD RX 7900又一非公卡亮相:档次上去了
每日热文:女子被绑浇墨汁?官方:自导自演 直播网红为赚流量博人眼球将严惩
left jon连接查询踩坑记
全球观热点:AMD RX 7900首批供货非常紧张!某品牌明年才能有
环球讯息:约4.1万人民币 法国一公司推出氢能电动自行车:像是助力车