站長資訊網
        最全最豐富的資訊網站

        java代碼是如何被機器識別的

        java代碼是如何被機器識別的

        java代碼是如何被機器識別的?

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

        請看下圖:

        java代碼是如何被機器識別的

        (免費學習視頻教程推薦:java視頻教程)

        解釋如下:

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

        解釋執行的優勢是無須等待編譯,立刻可以運行。而即時編譯的優勢在于實際運行速度更快。在 HotSpot 虛擬機中默認采用混合模式,綜合了解釋執行和即時編譯兩者的優點。它會先解釋執行字節碼,而后將其中反復執行的熱點代碼,以方法為單位進行即時編譯。

        Java 虛擬機執行 Java 字節碼的時候,首先會將字節碼文件加載到內存中,之后將加載后的 Java 類存放到方法區(Method Area)中。實際運行時,虛擬機會執行方法區中的代碼。

        在運行過程中,每次進入一個 Java 方法,Java 虛擬機會在當前線程的 Java 方法棧中生成一個棧幀,用以存放局部變量以及字節碼操作數。當退出當前執行方法時,無論正常返回還是異常返回,Java 虛擬機都會彈出當前線程的當前棧幀,將其丟棄。

        相關文章教程推薦:java入門教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品久久久久久国产三级| 亚洲精品国产高清嫩草影院| 日韩一区二区三区在线精品| 久久99国产精品尤物| 人妻无码久久精品| 国产精品 日韩欧美| 3D动漫精品啪啪一区二区下载| 真实国产精品vr专区| 久久精品18| 国产精品嫩草影院久久| 国产精品1区2区| 久久夜色精品国产噜噜亚洲AV| 亚洲国产成人精品久久久国产成人一区二区三区综 | 人妻少妇精品视频一区二区三区| 久久夜色精品国产亚洲av| 国产精品乱伦| 国产精品成人国产乱一区| 亚洲精品性视频| 一区二区三区四区精品视频| 国产成人精品日本亚洲专一区 | 丝袜美腿国产精品视频一区| 高清免费久久午夜精品| 国产精品对白刺激久久久| 精品三级AV无码一区| 日韩精品系列产品| 少妇人妻精品一区二区三区| 日韩精品视频在线观看免费| 国产精品网址你懂的| 人妻少妇精品视频一区二区三区| 亚洲伊人久久精品影院| 无码精品第一页| 亚洲а∨天堂久久精品| 亚洲欧美日韩精品久久亚洲区 | 合区精品久久久中文字幕一区| 青春草无码精品视频在线观| 日韩精品欧美国产在线| 亚洲午夜福利精品久久| 三上悠亚久久精品| 国产精品亚洲一区二区三区在线| 99精品无人区乱码在线观看| 国产成人亚洲精品青草天美|