java虛擬機5 字節碼
阿新 • • 發佈:2018-11-08
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 字節碼