一、class文件与dex文件解析

1、class文件

【概念】能够被JVM识别,加载并执行的文件格式。

【生成class文件】

通过IDE自动帮我们build;

手动通过javac去生成class文件;

通过Java命令去执行class文件;

【class文件作用】记录一个类文件的所有信息,记住是所有!

【class文件结构】

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

各个数据按顺序紧密的排列,无间隙(好处:减少class的体积,加载class文件时,更快速);

每个类或接口都单独占据一个class文件(好处:每个类或接口都可以独自管理自己内部的内容,无需相互交叉);

1)access_flags

2)constant_pool

3)范例

【class文件弊端】

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

2、dex文件

【概述】能够被DVM识别,加载并执行的文件格式。

【如何生成一个dex文件】

1)通过IDE自动帮我们build生成; 配置dex环境变量;/sdk/build-tools/26.0.0/dx;

2)手动通过dx命令去生成dex文件;

3)手动运行dex文件在手机;

【dex文件作用】记录整个工程中所有类文件的信息,记住是整个工程!

【dex文件结构】

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

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

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

3、class和dex对比

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,821评论 25 709
  • 1.什么是class文件 class文件就是可以被JVM识别,加载,运行的一种文件格式。一般情况下,它可以由jav...
    懒癌患者2018阅读 2,452评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,067评论 19 139
  • 热修复技术自从QQ空间团队搞出来之后便渐渐趋于成熟。 我们这个系列主要介绍如何一步步手动实现基本的热修复功能,无需...
    Sahadev阅读 986评论 0 50
  • 到底是多么的赤裸裸,或者是多么的模棱两可,才能让一个向来脑子过世的人,只有心还在运作。 还是一颗玻璃心。 什么叫玻...
    Kim5erly阅读 444评论 2 0