您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Java虛擬機中常用知識點之類文件結構的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1. Java文件 ClassFileTest.java
package com.zxs.ssh.template.service; public class ClassFileTest { int m = 1; public int inc(){ return m+1; } }
2. Class文件ClassFileTest.class
javac ClassFileTest.java 編譯.java文件得到.class文件
JDK版本 1.8.0_201
.class文件可以用WinHex打開
3. javap -verbose ClassFileTest.class (javap是一個用于分析.class文件字節碼內容的工具)
4. 分析Class文件
4.1 魔數
a.格式:u4
b.內容 CA FE BA BE
c.含義:代表這是.class文件
4.2 版本號
a.格式:次版本號u2 + 主版本號u2
b.內容:00 00 00 34
c.含義:0034即十進制52,jdk 1.1是45,1.2是46,因此52代表1.8,所以主版本號是1.8;0000即十進制0,所以次版本號是0;合起來就是1.8.0
4.3 常量池
常量個數u2+tag u1+length u2+bytes u1 起點00000008
4.4 訪問標志
u2 起點000000C2
4.5 類索引、父類索引和接口索引集合
u2+u2+u2(接口索引集合個數)+u2 起點000000C4
4.6 字段表集合
u2(字段個數)+u2(訪問標志)+u2(name_index)+u2(字段描述符索引)+u2(屬性表集合個數)+u2(屬性名索引)+u4(屬性長度)+u1 起點000000CA
4.7 方法表集合
u2(方法個數)++u2(訪問標志)+u2(name_index)+u2(方法描述符索引)+u2(屬性表集合個數)+u2(屬性名索引)+u4(屬性長度)+u1 起點000000D4
包含兩個方法,第一個是構造器方法,起點是000000D6;另一個方法是inc方法,起點是0000010A
4.8 屬性表集合
u2(屬性表集合個數)+u2(屬性名索引)+u4(屬性長度)+u1 起點00000136
關于“Java虛擬機中常用知識點之類文件結構的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。