Class文件和Dex文件

Class文件的基本概念:

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

Class文件和Dex文件

Class文件和Dex文件

class文件的作用:

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

class文件的结构:

  是一种8位字节的二进制流文件

   各个数据按顺序紧密的排列,无间隙

每个类或接口都独占一个class文件


在这张图中,每一行表示两个字节长度,按照从上到下、从左到右的顺序描述了class文件的结构。其中,浅颜色的部分是无符号数,深颜色的部分是表。下面以表格的形式详细描述一下具体的信息:

类型

名称

数量

U4

magic(加密段)

1

U2

minor_version(最新JDK版本)

1

U2

major_version(当前版本)

1

U2

constant_pool_count(常量池数量)

1

cp_info

constant_pool

constant_pool_count-1

U2

access_flags(权限)

1

U2

this_class

1

U2

super_class

1

U2

interfaces_count

1

U2

interfaces(直接继承接口)

interfaces_count

U2

fields_count

1

field_info

fields(所以成员变量)

fields_count

U2

methods_count

1

method_info

methods()

methods_count

U2

attributes_count

1

attribute_info

attributes(类属性)

attributes_count


常量池

记录基本数据类型

Class文件和Dex文件

记录的是索引,最后还是知道基本数据类型

Class文件和Dex文件Class文件和Dex文件

class文件的弊端:

内存占用大,不适合移动端

堆栈的加栈模式,加载速度慢

文件IO操作多,类查找慢

dex文件:

生成:

Class文件和Dex文件

执行:

Class文件和Dex文件

dex文件的作用:

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

文件结构:

是一种8为字节的二进制流文件

各个数据按顺序紧密的排列,无间隙

整个应用中所有的Java源文件都放在一个dex文件中


Class文件和Dex文件

Class文件和Dex文件

class文件和dex文件的区别:

本质上他们是一样的,dex文件是从class文件演变而来的

class文件存在许多冗余信息,dex会去除冗余,并整合

Class文件和Dex文件