詳解Java虛擬機(jī)30個(gè)常用知識(shí)點(diǎn)之1——類文件結(jié)構(gòu)
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打開(kāi)
3. javap -verbose ClassFileTest.class (javap是一個(gè)用于分析.class文件字節(jié)碼內(nèi)容的工具)


4. 分析Class文件
4.1 魔數(shù)
- a.格式:u4
- b.內(nèi)容 CA FE BA BE
- c.含義:代表這是.class文件
4.2 版本號(hào)
- a.格式:次版本號(hào)u2 + 主版本號(hào)u2
- b.內(nèi)容:00 00 00 34
- c.含義:0034即十進(jìn)制52,jdk 1.1是45,1.2是46,因此52代表1.8,所以主版本號(hào)是1.8;0000即十進(jìn)制0,所以次版本號(hào)是0;合起來(lái)就是1.8.0
4.3 常量池
常量個(gè)數(shù)u2+tag u1+length u2+bytes u1 起點(diǎn)00000008
4.4 訪問(wèn)標(biāo)志
u2 起點(diǎn)000000C2
4.5 類索引、父類索引和接口索引集合
u2+u2+u2(接口索引集合個(gè)數(shù))+u2 起點(diǎn)000000C4
4.6 字段表集合
u2(字段個(gè)數(shù))+u2(訪問(wèn)標(biāo)志)+u2(name_index)+u2(字段描述符索引)+u2(屬性表集合個(gè)數(shù))+u2(屬性名索引)+u4(屬性長(zhǎng)度)+u1 起點(diǎn)000000CA
4.7 方法表集合
u2(方法個(gè)數(shù))++u2(訪問(wèn)標(biāo)志)+u2(name_index)+u2(方法描述符索引)+u2(屬性表集合個(gè)數(shù))+u2(屬性名索引)+u4(屬性長(zhǎng)度)+u1 起點(diǎn)000000D4
包含兩個(gè)方法,第一個(gè)是構(gòu)造器方法,起點(diǎn)是000000D6;另一個(gè)方法是inc方法,起點(diǎn)是0000010A
4.8 屬性表集合
u2(屬性表集合個(gè)數(shù))+u2(屬性名索引)+u4(屬性長(zhǎng)度)+u1 起點(diǎn)00000136
以上所述是小編給大家介紹的Java虛擬機(jī)類文件結(jié)構(gòu)詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Java Web使用Html5 FormData實(shí)現(xiàn)多文件上傳功能
這篇文章主要介紹了Java Web使用Html5 FormData實(shí)現(xiàn)多文件上傳功能,需要的朋友可以參考下2017-07-07
Spring 中jdbcTemplate 實(shí)現(xiàn)執(zhí)行多條sql語(yǔ)句示例
本篇文章主要介紹了Spring 中jdbcTemplate 實(shí)現(xiàn)執(zhí)行多條sql語(yǔ)句示例,可以對(duì)多個(gè)表執(zhí)行多個(gè)sql語(yǔ)句,有興趣的可以了解一下。2017-01-01
Java?springBoot初步使用websocket的代碼示例
這篇文章主要介紹了Java?springBoot初步使用websocket的相關(guān)資料,WebSocket是一種實(shí)現(xiàn)實(shí)時(shí)雙向通信的協(xié)議,適用于需要實(shí)時(shí)通信的應(yīng)用程序,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03
springboot logback如何從apollo配置中心讀取變量
這篇文章主要介紹了springboot logback如何從apollo配置中心讀取變量的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率
這篇文章主要介紹了從java反編譯及字節(jié)碼角度探索分析String拼接字符串效率,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12

