我们在idea里面用jclasslib插件对一个简单的代码实例进行分析。

源代码如下:

public class test01 {private int num=0;public static void main(String[] args) {test01 t=new test01();int num=10;t.test01();}public void test01(){String name="hj";System.out.println(name);}}

jclasslib里面如下所示:

main方法签名:名字,描述符放在常量池里面,都是字面量

接下来分析它的code属性!也是最复杂的一项

字节码如上,都是一些操作栈指令,可见长度为16

里面LineNumberTable记录了操作指令和源代码直接的对应关系

LocalVariableTable 记录了局部变量表信息,可以看到有三项,分别是args、t、num,其中序号对应的是slot槽的对应索引,long,double占两个slot,序号对应它的第一个slot的索引

其中还可以看出它们的起始作用域,例如t:8-15,num:11-15

接下来看一下非static方法的局部变量表:

局部变量表的长度是2,TIP非static方法,初始化的时候this属性会被分配,并记录在索引为0的位置,这是约定俗成的,便于虚拟机加载。

jvm 字节码jclasslib解读相关推荐

  1. Java指令全集_Java的JVM字节码指令集详解

    本文详细介绍了如何使用javap查看java方法中的字节码.以及各种字节码的含义,并且配以完善的案例,一步步,从头到尾带领大家翻译javap的输出.在文末还附有JVM字节码指令集表. 本文不适合没有J ...

  2. java开发C语言编译器:把C实现的快速排序算法编译成jvm字节码

    有了前面一系列的铺垫和准备后,我们终于能走到至关重要的一刻.在本节,我们将用C语言开发快速排序算法,然后利用我们的编译器把它编译成java字节码,让C语言编写的快速排序算法能在java虚拟机上顺利执行 ...

  3. 2个字节能存多少个16进制_初探JVM字节码 - 疾风老头

    作者: LemonNan 原文地址: 代码地址: 字节码 概述 本篇要介绍的是能 "一次编译,到处运行的 JVM 字节码" 为什么能到处运行? 是因为在 任意平台下所编译出来的 c ...

  4. JVM字节码指令集大全及其介绍

    Java是怎么跨平台的 我们上计算机课的时候老师讲过:"计算机只能识别0和1,所以我们写的程序要经过编译器翻译成0和1组成的二进制格式计算机才能执行".我们编译后产生的.class ...

  5. Java生产环境下性能监控与调优详解 第8章 JVM字节码与Java代码层调优

    第8章 JVM字节码与Java代码层调优 8-1 jvm字节码指令-1 8-2 jvm字节码指令-2 8-3 i++与++i 8-4 字符串+拼接 8-5 Try-Finally字节码 8-6 Str ...

  6. 【JVM · 字节码】指令集 解析说明

    1. 概述 Java字节码指令对于虚拟机,就好像汇编语言对于计算机,属于基本执行指令. Java虚拟机的指令由 一个字节长度 的.代表着某种特定操作含义的数字(称为 操作码/Opcode)以及跟随其后 ...

  7. 深入理解JVM字节码(一)

    目录 深入剖析Class文件结构 一.初探class文件 二.class文件结构剖析 (一) 魔数 (二) 版本号 (三) 常量池 1. CONSTANT_Integer_info和CONSTANT_ ...

  8. Android自动化埋点(一) - JVM字节码

    JVM字节码 开头 这一系列文章,主要是讲自动化埋点又叫无痕埋点,或者字节码插桩技术,写这个系列文章的目的是 偶然间发现,网上关于这方面的博客很少,所以我根据自己的一些实战经验,整理了这个系列的文章. ...

  9. 深入理解JVM字节码(二)

    目录 字节码基础 一.字节码概述 二.Java虚拟机栈和栈帧 栈帧 1. 局部变量表 2. 操作数栈 三.字节码指令 1. 加载和存储指令 2. 操作数栈指令 3. 对象相关的字节码指令 1. ``方 ...

  10. JVM 调优实战--JVM字节码

    目录 通过javap命令查看class文件的字节码内容 常量池 ​描述符 字段描述符 方法描述符 解读方法字节码 图解 研究i++与++i的不同 查看字节码 对比 分析字符串拼接孰优孰劣 小结 通过j ...

最新文章

  1. CLRS2e读书笔记—Chapter5 Appendix C
  2. C++继承中父类和子类之间的同名覆盖
  3. mysql ——读写分离
  4. P1056 排座椅(模拟)
  5. java 生成正弦波声音_如何生成一个正弦波声音曲线?
  6. java set的first_Java Pair.setFirst方法代码示例
  7. SpringMVC实现文件上传
  8. Android中如何实现多个框,在android中的对话框中设置多个文本框
  9. 判断形参S所指字符串是否是回文,若是,函数返回1,不是则返回0,并在main中实现输出...
  10. 高性能网站架构的思考
  11. java接收前端JSON字符串
  12. 地图编辑器开发(四)
  13. 参考文献格式字号字体_参考文献用什么字体字号 参考文献标准格式字体
  14. 无线鼠标没反应怎么办
  15. oracle rac告警,oracle11.2.0.4 RAC 日志总有告警
  16. chrome 浏览手机网站
  17. 计算机屏保是不是休眠,计算机上屏保、待机、休眠、睡眠、关机的区别
  18. PSINS_Toolbox使用心得1
  19. JS设置请在微信客户端打开链接提示页面
  20. java 排版快捷键_Eclipse自动排版快捷键失效(转)

热门文章

  1. 服务器如何装linux 系统教程,教程/操作系统 手把手教你装Linux系统
  2. BT5的默认用户名和密码
  3. 脚本精灵服务器引擎数据为空,脚本精灵服务器
  4. AotucCrawler 快速爬取美女图片
  5. python基础:sys模块
  6. Kubernets:容器日志收集方案
  7. 神经网络是不是分类算法,人工神经网络分类算法
  8. Visio Viewer 打开vsd文件
  9. python写入文件后换行_python写入文件自动换行问题的方法
  10. 怎么用python扫描主机_如何调用python-nmap来实现扫描局域网存活主机(代码)