一、class文件與dex文件解析

1、class文件

【概念】能夠被JVM識(shí)別,加載并執(zhí)行的文件格式。

【生成class文件】

通過IDE自動(dòng)幫我們build;

手動(dòng)通過javac去生成class文件;

通過Java命令去執(zhí)行class文件;

【class文件作用】記錄一個(gè)類文件的所有信息,記住是所有!

【class文件結(jié)構(gòu)】

一種是8字節(jié)的二進(jìn)制流文件;

各個(gè)數(shù)據(jù)按順序緊密的排列,無間隙(好處:減少class的體積,加載class文件時(shí),更快速);

每個(gè)類或接口都單獨(dú)占據(jù)一個(gè)class文件(好處:每個(gè)類或接口都可以獨(dú)自管理自己內(nèi)部的內(nèi)容,無需相互交叉);

1)access_flags

2)constant_pool

3)范例

【class文件弊端】

內(nèi)存占用大,不適合移動(dòng)端;堆棧的加載模式,加載速度慢;文件IO操作多,類查找慢;

2、dex文件

【概述】能夠被DVM識(shí)別,加載并執(zhí)行的文件格式。

【如何生成一個(gè)dex文件】

1)通過IDE自動(dòng)幫我們build生成; 配置dex環(huán)境變量;/sdk/build-tools/26.0.0/dx;

2)手動(dòng)通過dx命令去生成dex文件;

3)手動(dòng)運(yùn)行dex文件在手機(jī);

【dex文件作用】記錄整個(gè)工程中所有類文件的信息,記住是整個(gè)工程!

【dex文件結(jié)構(gòu)】

一種是8字節(jié)的二進(jìn)制流文件;

各個(gè)數(shù)據(jù)按順序緊密的排列,無間隙;

整個(gè)應(yīng)用中所有Java源文件都放在一個(gè)dex中;

3、class和dex對(duì)比

本質(zhì)上他們都是一樣的,dex是從class文件演變而來的;

class文件存在許多沉余,并整合;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,082評(píng)論 25 709
  • 1.什么是class文件 class文件就是可以被JVM識(shí)別,加載,運(yùn)行的一種文件格式。一般情況下,它可以由jav...
    懶癌患者2018閱讀 2,553評(píng)論 0 1
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評(píng)論 19 139
  • 熱修復(fù)技術(shù)自從QQ空間團(tuán)隊(duì)搞出來之后便漸漸趨于成熟。 我們這個(gè)系列主要介紹如何一步步手動(dòng)實(shí)現(xiàn)基本的熱修復(fù)功能,無需...
    Sahadev閱讀 1,023評(píng)論 0 50
  • 到底是多么的赤裸裸,或者是多么的模棱兩可,才能讓一個(gè)向來腦子過世的人,只有心還在運(yùn)作。 還是一顆玻璃心。 什么叫玻...
    Kim5erly閱讀 465評(píng)論 2 0

友情鏈接更多精彩內(nèi)容