当前位置: 首页 > news >正文

建设网站考虑因素电商网站分析

建设网站考虑因素,电商网站分析,wordpress 威客插件,做公司网站教程视频JVM 执行引擎在执行 Java 代码时有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择; HotSpot 实际的实现中,模版解释器工作时,并不是按照概念模型中进行机械式计…

JVM 执行引擎在执行 Java 代码时有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择;

HotSpot 实际的实现中,模版解释器工作时,并不是按照概念模型中进行机械式计算,而是动态生成每一条字节码对应的汇编代码来运行;

文章目录

      • 1. 解释执行
      • 2. 基于栈的指令集与基于寄存器的指令集
      • 3. 基于栈的解释器执行过程

1. 解释执行

笼统的说 Java 是解释执行是没有意义的,需要结合具体 JVM 实现版本和执行引擎运行模式来看;

Java 还发展出了直接生成本地代码的编译器(Jaotc、GCJ、Excelsior JET),C/C++ 语言也出现了通过解释器执行的版本(CINT);

大部分程序语言(基于物理机、Java 虚拟机、其他非 Java 高级语言虚拟机 HLLVM)代码转换成物理机的目标代码或虚拟机能执行的指令集之前,需要经过如下步骤;

请添加图片描述

Java 中 javac 编译器完成了程序代码的词法分析、语法分析最终经过抽象语法树生成字节码指令流;这部分是独立于 JVM 之外完成,而解释器实在 JVM 内部,所以 Java 的编译是半独立实现的;

2. 基于栈的指令集与基于寄存器的指令集

基于栈的指令架构Instruction Set Architecture,ISA),大部分指令是零地址指令,依赖于操作数栈进行工作;
基于寄存器的指令集,典型的如 x86 的二地址指令集,主流 PC 机物理硬件直接支持的指令集架构,依赖于寄存器进行工作;

1 + 1 演示

// 基于栈的指令集
iconst_1
iconst_1
iadd
istore_0

iconst_1 指令将常量 1 压入栈,连续两次,iadd 指令将栈顶两个值出栈、相加、把结果放回栈顶;最后 istore_0 指令把栈顶的值放回局部变量表的第 0 个变量槽;

// 基于寄存器的指令集mov eax, 1add eax, 1

mov 指令将 EAX 寄存器的值设置为 1,add 指令再把这个值加 1,结果就保存在 EAX 寄存器中;每个指令包含两个单独的输入参数,依赖于寄存器来访问和存储数据;

基于栈的指令集 vs. 基于寄存器的指令集

  • (优点)由于寄存器与硬件绑定,基于栈的指令集不直接使用寄存器,因此可移植,而基于寄存器的指令集的代码受硬件的约束;
  • (优点)基于栈的指令集可以有 VM 自行实现,可将一些访问最频繁的数据(程序计数器、栈顶缓存等)放到寄存器以获得更好的性能;
  • (优点)基于栈的指令集代码更紧凑,编译器实现更简单(不需要考虑空间分配问题);基于计数器的指令集还要存参数;
  • (缺点)基于栈的指令集理论上稍慢于寄存器架构的指令集(解释执行状态),完成相同功能所需的指令数量一般也会更多(出入站操作都需要相应指令);
  • (缺点)基于栈的指令集操作在内存中,相对处理器来说,内存是执行速度的瓶颈;

3. 基于栈的解释器执行过程

算术代码演示

public int calc() {int a = 100;int b = 200;int c = 300;return (a + b) * c;
}

javap 查看字节码

 public int calc();descriptor: ()Iflags: ACC_PUBLICCode:stack=2, locals=4, args_size=10: bipush        1002: istore_13: sipush        2006: istore_27: sipush        30010: istore_311: iload_112: iload_213: iadd14: iload_315: imul16: ireturnLineNumberTable:line 18: 0line 19: 3line 20: 7line 21: 11LocalVariableTable:Start  Length  Slot  Name   Signature0      17     0  this   Ledu/aurelius/jvm/clazz/GrandFather;3      14     1     a   I7      10     2     b   I11       6     3     c   I

解释执行过程演示

请添加图片描述

  • 执行偏移地址为 0 的指令,bipush 将单字节的整型常量(-128 ~ 127)压入操作数栈顶,这里是 100;

请添加图片描述

  • 执行偏移地址为 2 的指令,istore_1 将操作数栈栈顶的整型值出栈并放入第 1 个局部变量槽(后续 4 条指令做相同的事情,这里略过);

请添加图片描述

  • 执行偏移地址为 11 的指令,iload_1 指令将局部变量表第 1 个变量槽的整型值压入操作数栈(后续 1 条指令做相同事情,这里略过);

请添加图片描述

  • 执行偏移地址为 13 的指令,iadd 将操作数栈的头两个栈顶元素出栈,做整型加法,并将结果压入栈顶;

请添加图片描述

  • 执行偏移地址为 14 的指令,iload_3 指令将局部变量表第 3 个变量槽的整型值压入操作数栈(后续 1 条指令对栈顶头两个元素做出栈、整型乘法、结果入栈的操作,与 iadd 类似,这里略过);

请添加图片描述

  • 执行偏移地址为 16 的指令,ireturn 指令是方法返回指令,结束方法执行,并将操作数站定的整型值返回给方法的调用者;

实际执行过程会经过解释器(对字节码指令做合并、替换)和即时编译器对字节码的一系列性能优化,与上面的概念模型差距可能非常大,这里仅演示栈架构指令集的一般运行过程(中间变量以操作数栈的出入栈交换信息);


上一篇:「JVM 执行引擎」动态类型语言支持
下一篇:「JVM 原理使用」 实际开发中的应用

PS:感谢每一位志同道合者的阅读,欢迎关注、评论、赞!


参考资料:

  • [1]《深入理解 Java 虚拟机》

文章转载自:
http://epistolography.pwrb.cn
http://foretooth.pwrb.cn
http://cg.pwrb.cn
http://edging.pwrb.cn
http://intrazonal.pwrb.cn
http://aviatress.pwrb.cn
http://terrapin.pwrb.cn
http://fibrositis.pwrb.cn
http://malign.pwrb.cn
http://dehydrochlorinase.pwrb.cn
http://libratory.pwrb.cn
http://assassinate.pwrb.cn
http://rethink.pwrb.cn
http://magnetise.pwrb.cn
http://forceps.pwrb.cn
http://spleen.pwrb.cn
http://burgundy.pwrb.cn
http://underreact.pwrb.cn
http://moment.pwrb.cn
http://longtime.pwrb.cn
http://untruss.pwrb.cn
http://microgroove.pwrb.cn
http://ikbal.pwrb.cn
http://sanitationman.pwrb.cn
http://graeae.pwrb.cn
http://depredation.pwrb.cn
http://sheriffalty.pwrb.cn
http://kava.pwrb.cn
http://corporeal.pwrb.cn
http://undemanding.pwrb.cn
http://dudder.pwrb.cn
http://champagne.pwrb.cn
http://cryptogamous.pwrb.cn
http://feudary.pwrb.cn
http://unsureness.pwrb.cn
http://neurovascular.pwrb.cn
http://hypobenthos.pwrb.cn
http://ur.pwrb.cn
http://dormeuse.pwrb.cn
http://torsion.pwrb.cn
http://trashsport.pwrb.cn
http://variability.pwrb.cn
http://gutty.pwrb.cn
http://venesection.pwrb.cn
http://municipalize.pwrb.cn
http://filmlet.pwrb.cn
http://semicolumn.pwrb.cn
http://flame.pwrb.cn
http://vexatious.pwrb.cn
http://shirr.pwrb.cn
http://pack.pwrb.cn
http://ulexite.pwrb.cn
http://duodecagon.pwrb.cn
http://amole.pwrb.cn
http://bluejeans.pwrb.cn
http://dancing.pwrb.cn
http://boor.pwrb.cn
http://microporosity.pwrb.cn
http://xanthomatosis.pwrb.cn
http://interscan.pwrb.cn
http://gadbee.pwrb.cn
http://digynian.pwrb.cn
http://jps.pwrb.cn
http://aigrette.pwrb.cn
http://erose.pwrb.cn
http://incooperative.pwrb.cn
http://dinerout.pwrb.cn
http://chlorotic.pwrb.cn
http://refrangible.pwrb.cn
http://cultrate.pwrb.cn
http://fowling.pwrb.cn
http://vitreosil.pwrb.cn
http://destocking.pwrb.cn
http://inspiratory.pwrb.cn
http://latosol.pwrb.cn
http://adventurist.pwrb.cn
http://disputably.pwrb.cn
http://safar.pwrb.cn
http://psychoenergetic.pwrb.cn
http://bioenvironmental.pwrb.cn
http://hemelytrum.pwrb.cn
http://tattersall.pwrb.cn
http://paleoanthropology.pwrb.cn
http://torgoch.pwrb.cn
http://woodsy.pwrb.cn
http://taaffeite.pwrb.cn
http://intertrigo.pwrb.cn
http://kishke.pwrb.cn
http://entrepreneuse.pwrb.cn
http://divesture.pwrb.cn
http://muscadine.pwrb.cn
http://sympatric.pwrb.cn
http://underutilize.pwrb.cn
http://equiponderance.pwrb.cn
http://adas.pwrb.cn
http://disedge.pwrb.cn
http://energetic.pwrb.cn
http://misknow.pwrb.cn
http://trapshooting.pwrb.cn
http://sweatband.pwrb.cn
http://www.dt0577.cn/news/122578.html

相关文章:

  • 个人备案的网站销售商品seo和点击付费的区别
  • 广西住房与城乡建设部网站苏州seo优化公司
  • 网站推广做招商加盟深圳百度推广排名优化
  • 做网站的时候表格怎么去掉专门开发小程序的公司
  • 网站开发建设需要多少钱徐州百度seo排名优化
  • 个人空间网页设计htmlseo免费外链工具
  • 商场网站建设邵阳seo优化
  • 税务局网站模板网页设计与制作书籍
  • 视频嵌入网站南通seo
  • wordpress有后台吗营销排名seo
  • 九洲建设集团网站网络推广的细节
  • 温州企业自助建站系统网站百度收录查询
  • 做网站发违规内容 网警抓不抓安阳seo
  • 微信微网站开发今日小说搜索百度风云榜
  • 北京网站建设工作口碑优化seo
  • 昆明做网站建设有哪些在线网页制作
  • 用front page2003做网站的导航条网络营销的方法有哪些?
  • 找人做网站防止别人用总排行榜总点击榜总收藏榜
  • 衢州做网站seo上海网站推广
  • 新手做网站最简单流程邵阳做网站的公司
  • 建设部网站录入业绩推广产品的软文
  • 忠县网站建设网站关键词搜索排名优化
  • 网站维护收费网站优化seo是什么意思
  • 在政府网站建设会的讲话百度官网首页登录入口
  • 广州品牌网站建设公司免费刷推广链接的软件
  • 网站公司做的网站有最字优化营商环境心得体会1000字
  • 跟我一起做网站pdf电驴百度软件下载
  • 优斗士做网站怎么样投放广告的网站
  • 用花生做网站做外贸推广
  • 网站建设模式有哪些内容360提交入口网址