JVM --java 位元組碼的結構解析

來源:互聯網
上載者:User

標籤:

Java位元組碼檔案的主體結構分為一下幾個部分:Class檔案頭部、常量池地區、當前類的描述資訊、欄位列表、方法列表、屬性列表

Class檔案頭部

  任何的class檔案的前四個位元組的內容就是CA FE BA BE 。Java是一種咖啡,故稱之為coffee baby。這四個位元組作為該檔案的校正碼。--》4

  接下來是JDK的版本資訊,兩個位元組代表JDK的最低版本,兩個位元組JDK的最高版本。--》4

常量池地區

  常量池中每一項包括兩部分:一個位元組標誌他的類型,然後是內容,內容的寬度是不一樣的。而這個內容先由兩個位元組記錄他真正內容在另一個常量池中的位置。稱之為常量池入口。

類的描述資訊

  兩個位元組標誌類的訪問標誌。public private.....。兩個位元組標誌類名在常量池中的位置。兩個位元組標誌其父類在常量池中的位置。然後在用兩個位元組標誌介面的數量。接下來列出了各個介面的常量池入口,其中每一項佔兩個位元組。

欄位列表

  兩個位元組欄位的數量。接下來就是各個屬性,這些屬性都有相同的內部結構(屬性名稱,屬性類型,附加屬性個數,附加屬性)。

方法列表

  兩個位元組方法數量。同樣每個方法相同的描述內部結構。

  接下來是方法體的描述,屬性的個數、長度、棧大小、局部變數、代碼清單(描述真正程式碼片段的資訊)。

  其中代碼清單有自己的內部結構:棧、局部變數、代碼長度、Exception列表

 

  

 

JVM --java 位元組碼的結構解析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.