一、JVM範圍3d
二、JVM和class文件blog
(1)、JVM和Java語言無關,JVM是一種規範,任何語言只要能編譯成class文件格式都能在JVM上運行索引
三、class文件格式接口
(1)、class文件就是一個二進制流,用十六進制表示爲:虛擬機
圖中一個矩形表明一個字節io
(2)class文件中的內容編譯
一、魔術:每一個Class文件的頭4個字節成爲魔數(Magic Number),它的惟一做用是肯定這個文件是否爲一個能被虛擬機接收的Class文件。class
全部Class文件,魔數均爲0xCAFEBABE。引用
二、大小版本號:Class文件中第5、六個字節存儲的是次版本號(minor version),第7、八個字節存儲的是主版本號(major version)。二進制
假設Class文件的版本號十進制下爲45.3,那麼major version在十進制下爲45,minor versio在十進制下則爲3。
三、常量池計數器:用來記錄常量池中常量的個數,由於用的是u2類型的數據即用兩個字節來存儲,因此常量池中的常量不能超過65535個。
並且,常量池計數器是從1開始的,這樣當某些數據想表達「不想引用任何一個常量池項」時,就能夠將其常量池索引值設爲0;
四、訪問標誌:用於識別一些類或接口層次的訪問信息。例如:ACC_PUBLIC、標誌位0x0001 表示是否爲public類型。