各種不同平台的虛擬機器與所有平台都統一使用的程式儲存格式——位元組碼是構成平台無關性的基石。
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等的使用最容易出現記憶體洩露,這些靜態變數的生命週期和應用...