深入理解Android java虚拟机art-Dex文件

2020.2.10 读完了 Dex文件

1 编写Dex文件的解析器

2 使用010editor 观察Dex文件 不看资料就可以 找到指定的字节位置的变量或类

3 1 和2 一般是 就写就观察比较好 

4 记忆Dex和class文件之间的区别 及 Dex文件的重要细节


Dex Header_Flags : dex.035 

练习编写 一个简单的HelloDex.java 文件

使用javac HelloDex.java 编译生成HelloDex.class文件

在将class文件编译成为dex文件  

将class编译成dex文件需要使用dx.bat  命令 dx --dex --output Hello.dex HelloDex.class

java使用的是class文件 而android使用的是dex文件



1 dex文件由多个class文件合并而来,把多个常量池合并到一个常量池,避免了常量冗余,有利于运行时的常量内存共享 避免了相同字符串占据内存数据

2 加载一个dex可以加载多个相互依赖的class,减少了文件io

3 arm cpu具有较多的通用寄存器,VM设计基于寄存器的执行流程需要多个寄存器会加速函数的传参和执行

你可能感兴趣的:(深入理解Android java虚拟机art-Dex文件)