<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          JVM學(xué)習(xí)之JVM基礎(chǔ)知識(shí)

          共 2484字,需瀏覽 5分鐘

           ·

          2020-11-27 09:21

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

          優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

          ? 作者?|??碼頭工人

          來(lái)源 |? urlify.cn/FRNnAr

          66套java從入門到精通實(shí)戰(zhàn)課程分享

          一、Java技術(shù)體系

          1、Java體系構(gòu)成

          1)Java程序語(yǔ)言

          2)Java虛擬機(jī)

          3)字節(jié)碼文件

          4)Java類庫(kù)

          5)第三方Java類庫(kù)

          2、JDK、JRE、JVM之間的關(guān)系

          1)JDK:Java程序語(yǔ)言、Java虛擬機(jī)和Java類庫(kù)統(tǒng)稱為JDK(Java Development Kit)

          2)JRE:Java類庫(kù)中的Java SE和Java虛擬機(jī)統(tǒng)稱為JDR(Java Runtime Enviroment)

          679c1d3b92d106843d15a1516ac31c6a.webp

          JVM介紹

          (1)JVM官方文檔定義

          The?Java?Virtual?Machine?is?an?abstract?computing?machine.?Like?a?real?computing?machine,?it?has?an?instruction?set?and?manipulates?various?memory?areas?at?run?time.?It?is?reasonably?common?to?implement?a?programming?language?using?a?virtual?machine;?the?best-known?virtual?machine?may?be?the?P-Code?machine?of?UCSD?Pascal.


          The?Java?Virtual?Machine?knows?nothing?of?the?Java?programming?language,?only?of?a?particular?binary?format,?the?class?file?format.?A?class?file?contains?Java?Virtual?Machine?instructions?(or?*bytecodes*)?and?a?symbol?table,?as?well?as?other?ancillary?information.

          (2)中文解釋

          Java虛擬機(jī)是一個(gè)抽象的計(jì)算機(jī)(本質(zhì)上就是可運(yùn)行程序)。它和真實(shí)的計(jì)算機(jī)相似,具有指令集且能夠在運(yùn)行時(shí)對(duì)內(nèi)存區(qū)域進(jìn)行操作。Java虛擬機(jī)并不能直接解釋Java語(yǔ)言,它只能夠解釋特定的二進(jìn)制格式,即.class文件(字節(jié)碼文件)。

          JVM結(jié)構(gòu)

          336efc344cf81ae1f66d90828daff227.webp

          Java代碼執(zhí)行流程

          bdc93e39ed59cda78f10aafc4788b413.webp

          JVM架構(gòu)模型

          1、指令架構(gòu)

          (1)基于棧式架構(gòu)

          a)設(shè)計(jì)和實(shí)現(xiàn)更簡(jiǎn)單

          b)指令集小,編譯器易實(shí)現(xiàn)

          c)不需要硬件支持,可移植性更好,更容易實(shí)現(xiàn)跨平臺(tái)

          (2)基于寄存器架構(gòu)

          a)依賴硬件,可移植性查

          b)執(zhí)行效率高

          2、例子

          (1)Java源碼

          public?class?StackTest?{

          ????public?static?void?main(String[]?args)?{
          ????????int?a?=?2;
          ????????int?b?=?3;
          ????????int?c?=?a?+?b;
          ????}
          }

          (2)C++源碼

          void?test()?{
          ????int?a?=?2;
          ????int?b?=?3;
          ????int?c?=?a?+?b;
          }

          (3)基于棧式結(jié)構(gòu)計(jì)算過(guò)程


          使用jclasslib查看字節(jié)碼

          bb643dee8f2b00cb621ddc855c83e663.webp

          0?iconst_2????常量為2
          1?istore_1????將常量2保存至索引為1的操作數(shù)棧中
          2?iconst_3????常量為3
          3?istore_2????將常量2保存至索引為2的操作數(shù)棧中
          4?iload_1?????加載操作數(shù)棧索引為1所對(duì)應(yīng)的值
          5?iload_2?????加載操作數(shù)棧索引為2所對(duì)應(yīng)的值
          6?iadd????????相加
          7?istore_3????將相加結(jié)果保存至索引為3的操作數(shù)棧中
          8?return???

          (4)基于寄存器結(jié)構(gòu)計(jì)算過(guò)程

          Android studio編寫完后使用ida查看指令,ARM32下的匯編指令

          e745cb25ad92b66775272b367278c593.webp

          SUB?????????????SP,?SP,?#0xC
          MOVS????????????R0,?#2??????????????????????操作數(shù)2移動(dòng)至R0寄存器?
          STR?????????????R0,?[SP,#0xC+var_4]?????????R0寄存器的值寫入[SP,#0xC+var_4]地址
          MOVS????????????R0,?#3??????????????????????操作數(shù)3移動(dòng)至R0寄存器?
          STR?????????????R0,?[SP,#0xC+var_8]?????????R0寄存器的值寫入[SP,#0xC+var_8]地址
          LDR?????????????R0,?[SP,#0xC+var_4]?????????[SP,#0xC+var_4]的值讀入R0寄存器
          LDR?????????????R1,?[SP,#0xC+var_8]?????????[SP,#0xC+var_8]的值讀入R1寄存器
          ADD?????????????R0,?R1??????????????????????R0,?R1寄存器相加,結(jié)果放置R0寄存器
          STR?????????????R0,?[SP,#0xC+var_C]?????????R0寄存器的值寫入[SP,#0xC+var_C]地址
          ADD?????????????SP,?SP,?#0xC
          BX??????????????LR

          3、思考

          網(wǎng)上常有結(jié)論,在完成相同操作的情況下,基于棧式架構(gòu)比基于寄存器架構(gòu)的指令路量要多。這種說(shuō)法嚴(yán)謹(jǐn)嗎?

          可以從上面例子中看出ARM32下的基于寄存器架構(gòu)的指令數(shù)量并不比基于棧式結(jié)構(gòu)的指令數(shù)量少。很多人只討論了x86架構(gòu)下的指令數(shù)量,而忽略了ARM架構(gòu)下的指令集數(shù)量。




          粉絲福利:實(shí)戰(zhàn)springboot+CAS單點(diǎn)登錄系統(tǒng)視頻教程免費(fèi)領(lǐng)取

          ???

          ?長(zhǎng)按上方微信二維碼?2 秒即可獲取資料



          感謝點(diǎn)贊支持下哈?160facc2b7f4719ab2a46c373bcdb23c.webp

          瀏覽 59
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  婷婷丁香综合网 | 亚洲欧美suv精品8888日 | 大鸡吧影视 | 久操成人毛片 | 亚洲综合婷婷五月 |