class & dex 文件详解

class & dex 文件详解


一、class 文件

1. 什么是 class 文件

能够被 JVM 识别,加载并执行的文件格式

2. 如何生成一个class 文件

  • 通过 IDE自动帮我们 build 生成 class 文件
  • 手动通过javac 命令来生成 class 文件
  • 通过 java 命令去执行 class 文件

3. class 文件的作用

记录一个类文件的所有信息

4. class 文件格式详解

4.1 class 文件结构

1.一种8位字节的二进制流文件
2.各个数据按顺序紧密的排列,无间隙
3.每个类或接口都单独占据一个class 文件


4.2 constant_pool(常量池)
  • CONSTANT_Integer_info
  • CONSTANT_Long_info
  • CONSTANT_String_info
  • CONSTANT_Class_info
  • CONSTANT_Fieldref_info
  • CONSTANT_Methodref_info
4.3 010 Editor 查看class文件结构

5. class文件弊端

  • 内存占用大,不适合移动端
  • 堆栈的加栈模式,加载速度慢
  • 文件 IO 操作多,类查找慢

二、dex 文件详解

1. 什么是 dex文件

能够被 DVM 识别,加载并执行的文件格式

2. 如何生成一个 dex 文件

  • 通过 IDE 自动帮我们 build 生成 class 文件
  • 手动通过 dx 命令来生成 class 文件
dx --dex --output Hello.dex Hello.class 
  • 手动运行 dex 文件在手机上
 //首先我们把 Hello.dex 文件push 到模拟器上
 adb push Hello.dex /sdcard
 adb shell
 //切换到sdcard 目录下执行以下命令
 dalvikvm -cp Hello.dex Hello 
 //执行结果
 Hello,Android!

3. dex 文件的作用

记录整个工程中所有类文件中的信息

4. dex 文件格式详解

4.1 dex文件结构

1.一种8位字节的二进制流文件
2.各个数据按顺序紧密的排列,无间隙
3.整个应用中所有Java源文件都放在一个 dex 中


4.2 010 Editor 查看dex文件结构

三、class文件与 dex 文件对比

异同

  • 本质上都是一样的,dex是从 class文件演变而来
  • class 文件存在很多冗余信息,dex 会去除冗余,并整合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值