1. 程式人生 > >java虛擬機5 字節碼

java虛擬機5 字節碼

const 字段 java fields attr 包含 ima this 源碼

  java字節碼本質是java程序的格式化表示,便於機器處理。所以他是java程序的另一種表示,java程序包含的信息他都包含並且更加結構化。

  java虛擬機字節碼格式:

技術分享圖片

magic

  魔數,標識該文件是一個字節碼文件。

minor_version

major_version

  字節碼的版本號

constant_pool

  常量池,存儲字節碼中的常量數據以及符號引用。常量數據包括有utf8、Integer、float、long、double幾種類型。符號引用包括有class、field、method

  因為java在編譯的時候,不像c有連接的過程,虛擬機加載的時候是動態連接,所以需要存儲符號引用以便虛擬機加載的時候進行連接。

access_flags

  訪問標識。

this_class

  類索引,指向一個常量池中的class類型

super_class

  父類索引,指向一個常量池中的class類型

interfaces

  接口索引,指向多個常量池中的class類型

fields

  字段,存儲類的字段定義。

methods

  方法,存儲類的方法定義。

attributes

  屬性表用於存儲class文件、字段、方法的專有信息,如下所示。字段和方法都有自己的屬性定義。

屬性名稱 使用位置 含義
code 方法 字節碼指令
ConstantValue 字段 final定義的常量
Deprecated 類、方法、字段 聲名位deprecated的類、字段、方法
Exceptions 方法 方法拋出的異常
InnerClasses 內部類列表
LineNumberTable code 源碼行號欲指令對應關系
LocalVariableTable code 方法局部變量
SourceFile 原文件名稱
Synthetic 類、方法、字段 編譯器自動生成

  

java虛擬機5 字節碼