插件化学习笔记一:class和dex文件的区别

以下内容来源于网络,整理在此作为自己的学习笔记:

class文件的作用

class文件的作用是记录一个类文件的所有信息。
例如记住了当前类的引用this、父类super等等。class文件记录的信息往往比java文件多。

class文件结构:

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

class文件的弊端

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

DEX:Android平台上可执行文件的类型。

原文来自:
JVM和DVM区别 - CSDN博客
https://blog.csdn.net/u014623470/article/details/44524835

区别一:

dvm执行的是.dex格式文件 jvm执行的是.class文件 android程序编译完之后生产.class文件,然后,dex工具会把 .class文件处理成 .dex文件,然后把资源文件和.dex文件等打包成.apk文件。apk就是android package的意思。 jvm执行的是.class文件。

区别二:

dvm是基于寄存器的虚拟机 而jvm执行是基于虚拟栈的虚拟机。寄存器存取速度比栈快的多,dvm可以根据硬件实现最大的优化,比较适合移动设备。

区别三:

.class文件存在很多的冗余信息,dex工具会去除冗余信息,并把所有的.class文件整合到.dex文件中。减少了I/O操作,提高了类的查找速度

为什么dex更精简,更适合移动端呢?

因为.dex把所有.class的 header头(包含JDK)写成了一个,所有的常量放在一个池里, .dex只维护了一个索引.

JVM: .java –> javac –> .class –> jar –> .jar
架构: 堆栈

DVM: .java –> javac –> .class –> dx.bat –> .dex
架构: 寄存器(cpu上一块高速的缓存)

dex文件的作用

dex文件的作用是记录整个工程(通常是一个Android工程)的所有类文件的信息。

dex文件的结构

8位字节的二进制流文件
各个数据紧密排列,无间隙,减少了文件体积,加快加载速度
整个工程的类信息都存放在一个dex文件中(不考虑dex分包的情况下)

猜你喜欢

转载自blog.csdn.net/baidu_31093133/article/details/82381305