欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          java代碼是如何被機(jī)器識(shí)別的

          java代碼是如何被機(jī)器識(shí)別的

          java代碼是如何被機(jī)器識(shí)別的?

          首先,Java作為一門高級(jí)程序語言,其語法非常復(fù)雜,直接將 Java 代碼丟給機(jī)器,機(jī)器是無法識(shí)別 Java 代碼的。所以,對于Java語言來說,首先是使用編譯器將我們的 Java 源碼(.java文件)編譯成字節(jié)碼文件(.class文件),之后再使用虛擬機(jī)(JVM)將字節(jié)碼翻譯成機(jī)器碼,最后機(jī)器碼才能被機(jī)器識(shí)別并執(zhí)行。

          請看下圖:

          java代碼是如何被機(jī)器識(shí)別的

          (免費(fèi)學(xué)習(xí)視頻教程推薦:java視頻教程)

          解釋如下:

          其實(shí) JVM 是無法直接運(yùn)行字節(jié)碼文件的,JVM 需要將字節(jié)碼翻譯成機(jī)器碼才可以運(yùn)行對應(yīng)的代碼邏輯。在 HotSpot 虛擬機(jī)中,有兩種翻譯形式:第一種是解釋執(zhí)行,即逐條將字節(jié)碼翻譯成機(jī)器碼并執(zhí)行;第二種是即時(shí)編譯(Just-In-Time compilation,JIT),即將一個(gè)方法中包含的所有字節(jié)碼編譯成機(jī)器碼后再執(zhí)行。這兩種方式各有優(yōu)劣。

          解釋執(zhí)行的優(yōu)勢是無須等待編譯,立刻可以運(yùn)行。而即時(shí)編譯的優(yōu)勢在于實(shí)際運(yùn)行速度更快。在 HotSpot 虛擬機(jī)中默認(rèn)采用混合模式,綜合了解釋執(zhí)行和即時(shí)編譯兩者的優(yōu)點(diǎn)。它會(huì)先解釋執(zhí)行字節(jié)碼,而后將其中反復(fù)執(zhí)行的熱點(diǎn)代碼,以方法為單位進(jìn)行即時(shí)編譯。

          Java 虛擬機(jī)執(zhí)行 Java 字節(jié)碼的時(shí)候,首先會(huì)將字節(jié)碼文件加載到內(nèi)存中,之后將加載后的 Java 類存放到方法區(qū)(Method Area)中。實(shí)際運(yùn)行時(shí),虛擬機(jī)會(huì)執(zhí)行方法區(qū)中的代碼。

          在運(yùn)行過程中,每次進(jìn)入一個(gè) Java 方法,Java 虛擬機(jī)會(huì)在當(dāng)前線程的 Java 方法棧中生成一個(gè)棧幀,用以存放局部變量以及字節(jié)碼操作數(shù)。當(dāng)退出當(dāng)前執(zhí)行方法時(shí),無論正常返回還是異常返回,Java 虛擬機(jī)都會(huì)彈出當(dāng)前線程的當(dāng)前棧幀,將其丟棄。

          相關(guān)文章教程推薦:java入門教程

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)