jclasslib 插件安装及使用

原文地址 blog.csdn.net

学习Java,必须要了解 JVM,而学习 JVM 知识时,总要去研究一些字节码指令
而 jclasslib 这个插件很好的解决了这个问题

jclasslib安装:

1.打开设置

或者按Ctrl + Alt +S,打开设置

![在这里插入图片描述]( https://img-blog.csdnimg.cn/a15a91384c5c49c38c0aceb85649ce44.jpg?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA5py16Iqx6Iqx,size_12,color_FFFFFF,t_70,g_se,x_16#pic_center)
2.找到 jclasslib 插件

点击 install 下载安装即可

![在这里插入图片描述]( https://img-blog.csdnimg.cn/ac71814640774500b0c6466ad0f92351.jpg?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA5py16Iqx6Iqx,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
3.安装完重启,然后点击视图:

![在这里插入图片描述]( https://img-blog.csdnimg.cn/19f9e96ea5344bf9937468b1f84df307.png?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA5py16Iqx6Iqx,size_10,color_FFFFFF,t_70,g_se,x_16#pic_center)
4.打开 jclasslib,即可看到相关的汇编指令

![在这里插入图片描述]( https://img-blog.csdnimg.cn/8b208c59b6c94b19aa01d8fe66cde73a.jpg?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA5py16Iqx6Iqx,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
2.jclasslib 结构分析:

上图方法包含了此Java文件中包含的所有方法
而展开后,< init >代表构造方法

main方法
![在这里插入图片描述]( https://img-blog.csdnimg.cn/6c955a8e01fa4f2688a6ea88f3acc903.png?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA5py16Iqx6Iqx,size_20,color_FFFFFF,t_70,g_se,x_16)
描述符:描述方法的参数类型以及返回值类型
如上述例子:<( [ Ljava / lang / String;)V>,说明参数类型是Ljava / lang / String;返回值类型是V,即为 void 类型
访问标志为:public static

选中Code

展开main方法,选中 Code,右边会出现字节码,异常表及杂项

字节码:即Java方法对应的字节码指令

![在这里插入图片描述]( https://img-blog.csdnimg.cn/518dc01deace4754bd07e7c10c0abf3b.jpg?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA5py16Iqx6Iqx,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
异常表(Exception table):方法抛出的异常

![在这里插入图片描述]( https://img-blog.csdnimg.cn/6f75004471144e71b5548894b861225e.jpg?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA5py16Iqx6Iqx,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

杂项(Misc):存放一些描述信息

![在这里插入图片描述]( https://img-blog.csdnimg.cn/081d7bf2d85d4e9fb2b369da4ddbb7df.jpg?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA5py16Iqx6Iqx,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

继续展开Code

①LineNumberTable,即行号表

![在这里插入图片描述]( https://img-blog.csdnimg.cn/e779510ff9ba42f78bf118805b1e003e.jpg?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA5py16Iqx6Iqx,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

②LocalVariableTable,即局部变量表

![在这里插入图片描述]( https://img-blog.csdnimg.cn/92bf2b84d8134f3dacb2637e07694284.jpg?x-oss-process=image/watermark ,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LiA5py16Iqx6Iqx,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

  • 起始PC(Start PC):字节码指令行号,指变量声明的起始位置
  • 长度(Length):变量作用域范围,从起始位置开始,变量可用的行长度
  • 索引(Index):JVM通过索引使用局部变量
  • 名字(Name):局部变量的名称
  • 描述符(Descriptor):描述局部变量的类型

若想要了解字节码指令的含义,可直接点击相应的字节码指令,就直接跳转到 Java虚拟机

posted @ 2024-01-25 14:40  cps666  阅读(1356)  评论(0)    收藏  举报