jclasslib 工具可以查看 class 文件的结构信息
github 下载地址(借助下载工具会快些):
https://github.com/ingokegel/jclasslib/releases/download/5.7/jclasslib_win64_5_7.exe
Test.java 代码
public class Test {
public int test(int i) {
return i+1;
}
}
jclasslib 安装到本地,打开 Test.java 编译后的 Test.class 文件
与我之前手工标记的一张图,结果一致
详细的分析
Test.java 编译的 Test.class 的文件中,包含:
- 魔数 Magic Number(CAFE BABE)
- 版本号(Minor:0000,Major:0034)
- 常量池(14项)
- 访问标志(public)
- 类索引、父类索引、接口索引集合(2个:this_class、super_class)
- 字段表(field_info)集合(0个)
- 方法表(method_info)集合(2个)
- 属性表(attribute_info)集合(1个)
见这篇文章:
https://www.javanav.com/val/296686d016a147f5b91d8ad82c6f048d.html
jclasslib 进行了整合
- 一般信息显示了版本号、常量池、访问标志、本类索引、父类索引、接口计数、方法计数、属性计数,汇总了 class 文件的总体情况
- 常量池、接口、字段、方法、属性,点进各项可以查看对应的具体信息
【Java学习资源】整理推荐
- Centos 7.4 编译 OpenJDK 8
- MAT 分析堆内存快照
- jclasslib 查看类信息
- 增大 MAT 堆内存
- JVM 常用配置参数(Java 8)
- 40 道JVM面试题解答
- JVM 问题排查常用指令
- jvisualvm 远程连接服务器 JVM
- 字节码指令分类
- -verbose:gc 和 -XX:+PrintGC 的区别
- JVM字节码指令表
- 图解 Class 文件结构
- Class 文件的结构
- JVM 故障处理工具列表
- HotSpot 内存分配的主要规则
- 开启 GC 日志
- 垃圾收集器及特点
- JVM垃圾回收算法
- 什么样的 Java 对象会被当垃圾回收?
- 内存溢出复现
- HotSpot VM 中对象的内存分析
- JVM 控制的内存区域
- JVM家族
- Java 的发展史
- 常见 JVM dump 指令
【Java面试题与答案】整理推荐