JVM基础知识(二)

冷不防 2023-01-21 07:27 372阅读 0赞

Class文件解读

一、Class文件是什么?

就是由JVM执行的二进制文件,下图分别为IDEA下某Class文件二级制、十六进制的样子。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ2NjI4NTg_size_16_color_FFFFFF_t_70

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQ2NjI4NTg_size_16_color_FFFFFF_t_70 1

二、如何阅读Class文件?

1.几款好用的工具

IDEA插件BinEd 、Sublime 、Notepad等

2.Class文件结构

(1)按数据结构主要有两部分组成,一是无符号数 u1 u2 u4 u8(分别占1个字节 2个字节 4个字节 8个字节);二是 _info 表类型(_info的来源是Hotspot源码中的写法);

(2)

  1. ClassFile {
  2. u4 magic // 标识class文件格式 4个字节,如java的class文件固定值(16进制下)为 cafe babe
  3. u2 minor_version; // 副版本号 2个字节
  4. u2 major_version; // 主版本号 2个字节,如jdk1.8,固定值(16进制下)为00 34
  5. u2 constant_pool_count; // 常量池计数器 2个字节
  6. cp_info constant_pool[constant_pool_count-1]; // 常量池 多个字节,从#1计数
  7. u2 access_flags; // 访问标志 2个字节
  8. u2 this_class; // 该class的全限定类名 2个字节
  9. u2 super_class; // 该class父类的全限定类名 2个字节
  10. u2 interfaces_count; // 接口计数器 2个字节,标识该class中有几个接口
  11. u2 fields_count
  12. ...
  13. }

#

发表评论

表情:
评论列表 (有 0 条评论,372人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java基础知识——JVM

    简介 JVM 是可运行 Java 代码的假想计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆和一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没

    相关 JVM基础知识(一)

    JVM是什么 是一种规范,这种规范有多个实现,我们常用的Hotspot只是其中之一; 是虚拟出来的一台机器,有自己的内存、指令集等; 是一个跨语言的平台

    相关 JVM基础知识

     对于搞开发的我们其实也是一样,现在流行的框架越来越多,封装的也越来越完善,各种框架可以搞定一切,几乎不用关注底层的实现,初级程序员只要熟悉基本的使用方法,便可以快速的开发上线

    相关 python基础知识

    代码部分已经有很详细的注释了,基本上零基础的多可以看懂,所以这里就不多说了,直接上代码了。有错误或者不足的地方,欢迎下方留言。 认识字典: -- coding: