jvm在生成class文件的时候,会默认给我们填充父类等信息,这就是为什么能够调用super关键字的原因。
majic:加密段,用来判断class文件是否被篡改过;
minor_version:当前class文件最小适配的版本
maj
constant_:常量池的数量
constant_pool:真正的常量池,cp_info结构体类型
access_flags:当前class文件的作用域标识,比如Public
this_class:
super_class:jvm虚拟机会默认给我们填充当前类的父类
interface_count:当前类直接继承的接口数量
interfaces:当前类直接继承的接口
fields_count:
fields:
存储的并不是真正的内容,而是索引,真正的内容存储在常量池中的CONSTANT_String_info等。
内存占用大,不适合移动端
堆栈的加栈模式,加载速度慢
文件IO操作多,类查找慢:每个class文件只存储了一个类的class信息,每次加载新的class文件都要重新查找和读取
能够被dvm识别,加载并执行的文件格式
1、IDE build生成
2、手动生成
1、dx --dex --output Hello.dex Hello.class
2、adb push Hello.dex /storage/emulated/0
3、adb shell dalvikvm -cp /sdcard/Hello.dex Hello
记住整个工程中所有类文件的信息。是整个工程!
header:
string_ids:
type_ids:
proto_ids:
field_ids:
method_ids:
class_defs:
加载、链接(验证、准备、分析)、初始化
wf弱引用指向object对象。
上一篇:docker应用:搭建私有云盘
下一篇:canvas入门