《深入理解Java虛擬機器》筆記 類檔案結構

2021-08-21 06:00:30 字數 1045 閱讀 4608

各種不同平台的虛擬機器與所有平台都統一使用的程式儲存格式——位元組碼是構成平台無關性的基石。

1. class類檔案的結構

常量池的入口放置一項u2型別的資料。代表常量池容量計數值(constant_pool_count)

常量池主要放兩類常量:字面量和符號引用。字面量如文字字串、宣告為final的常量值等。符號引用包括:類和介面的全限定名;欄位的名稱和描述符;方法的名稱和描述符。

每乙個常量都是乙個表,jdk1.7共有14種表,表的第一位是乙個u1型別的標誌位。

常量池的專案型別

型別標誌

描述constant_utf8_info

1utf-8編碼的字串

constant_integer_info2整形

constant_float_info

3浮點型

constant_long_info

4長整型

constant_double_info

5雙精度型

constant_class_info

6類或介面的符號引用

constant_string_info

7字串型別

constant_fieldref_info

8欄位的符號引用

constant_methodref_info

9類中方法的符號引用

constant_inte***cemethodref_info

10介面中方法的符號引用

constant_nameandtype_info

11欄位或方法的部分符號應用

constant_methodhandle_info

12表示方法控制代碼

constant_methodtype_info

13標識方法型別

constant_invokedynamic_info

14表示乙個動態方法呼叫點

這14種常量型別均有自己的結構。1由tag(u1)、length(u2)、bytes(u1)組成;2-5有tag、bytes組成;6-11由tag、index(u2)、index組成。

深入理解Java虛擬機器

1.class檔案是一組以8位位元組為基礎單位的二進位製流,各個資料專案嚴格按照順序緊湊地排列在class檔案中,中間沒有新增任何分隔符,這使得整個class檔案中儲存的內容幾乎全部是程式執行的必要資料,沒有空隙存在。當遇上占用8位位元組以上的資料時,按照高位在前的方式分割成若干個8位進行儲存 大端...

《深入理解Java虛擬機器》讀書筆記十

第十一章 晚期 執行期 優化 1 hotspot虛擬機器內的即時編譯 直譯器與編譯器 即時編譯器 直譯器與編譯器兩者各有優勢 hotspot虛擬機器中即時間編譯器 hotspot虛擬機器的分層編譯策略 編譯物件 觸發條件 方法呼叫計數器 回邊計數器 編譯過程 檢視及分析即時編譯結果 2 編譯優化技術...

深入理解Java虛擬機器 JVM記憶體洩漏

jvm記憶體洩漏 記憶體洩漏就是存在一些物件沒有被 這些物件是可達的,但是這些物件是無用的,那麼這些物件就存在記憶體洩漏,即不會被gc 但是卻占用記憶體。記憶體溢位主要分為以下幾種 1.靜態集合類引起記憶體洩漏 像hashmap vector等的使用最容易出現記憶體洩露,這些靜態變數的生命週期和應用...