JVM基础知识(二)
Class文件解读
一、Class文件是什么?
就是由JVM执行的二进制文件,下图分别为IDEA下某Class文件二级制、十六进制的样子。
二、如何阅读Class文件?
1.几款好用的工具
IDEA插件BinEd 、Sublime 、Notepad等
2.Class文件结构
(1)按数据结构主要有两部分组成,一是无符号数 u1 u2 u4 u8(分别占1个字节 2个字节 4个字节 8个字节);二是 _info 表类型(_info的来源是Hotspot源码中的写法);
(2)
ClassFile {
u4 magic; // 标识class文件格式 4个字节,如java的class文件固定值(16进制下)为 cafe babe
u2 minor_version; // 副版本号 2个字节
u2 major_version; // 主版本号 2个字节,如jdk1.8,固定值(16进制下)为00 34
u2 constant_pool_count; // 常量池计数器 2个字节
cp_info constant_pool[constant_pool_count-1]; // 常量池 多个字节,从#1计数
u2 access_flags; // 访问标志 2个字节
u2 this_class; // 该class的全限定类名 2个字节
u2 super_class; // 该class父类的全限定类名 2个字节
u2 interfaces_count; // 接口计数器 2个字节,标识该class中有几个接口
u2 fields_count
...
}
还没有评论,来说两句吧...