JVM指令手册

本文介绍了JVM指令手册,包括栈和局部变量操作、类型转换、整数和逻辑运算、对象与数组操作、控制流指令、方法调用与返回等内容。通过实例演示了如何使用IDEA转换底层文件,并查看JavapTest.class的底层源码,帮助理解JVM指令在实际代码执行中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


时间不等人,一晃眼开学大四了,哭辽😭,认真学Java👍,今天看了视频JVM如何调优,果然JVM很重要🤦‍♀️

IDEA转换底层文件

  • 首先写个简单类,重点理解如何转换底层文件,JavapTest.class
public class JavapTest {
    public void test(){
        int a = 10;
        int b = 20;
        int c = (a + b) * 10;
        System.out.println(c);
    }

    public static void main(String[] args) {
        JavapTest javapTest = new JavapTest();
        javapTest.test();
    }
}

  • 运行后文件会在包的out文件夹下产生JavapTest.class

  • 可以把class字节码文件复制到包目录下,便于转换
    在这里插入图片描述

  • 到IEDA的控制台Terinal下输入javap命令在这里插入图片描述
    -输入javap -c JavapTest.class > javaptest.txt,把class文件转换成txt方便查看,![在这里插入图片描述](https://img-blog.csdnimg.cn/8cfca50dc3a04937afa5101544aea95a.png

  • 到包目录下会产生一个class文件,打开里面就是代码的底层源码。

  • 打开查看根据指令手册得到栈中栈帧的过程。在这里插入图片描述

 public void test();
    Code:
       0: bipush        10
       2: istore_1           //istore_1 将int类型值存入局部变量1
       3: bipush        20
       5: istore_2
       6: iload_1            //iload_1 从局部变量1中装载int类型值
       7: iload_2
       8: iadd               //iadd 执行int类型的加法
       9: bipush        10
      11: imul              //imul 执行int类型的乘法
      12: istore_3
      13: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;
      16: iload_3
      17: invokevirtual #3                  // Method java/io/PrintStream.println:(I)V
      20: return

JVM指令手册

1. 栈和局部变量操作

1.1 将常量压入栈的指令

aconst_null 将null对象引用压入栈
iconst_m1 将int类型常量-1压入栈
iconst_0 将int类型常量0压入栈
iconst_1 将int类型常量1压入栈
iconst_2 将int类型常量2压入栈
iconst_3 将int类型常量3压入栈
iconst_4 将int类型常量4压入栈
iconst_5 将int类型常量5压入栈
lconst_0 将long类型常量0压入栈
lconst_1 将long类型常量1压入栈
fconst_0 将float类型常量0压入栈
fconst_1 将float类型常量1压入栈
dconst_0 将double类型常量0压入栈
dconst_1 将double类型常量1压入栈
bipush 将一个8位带符号整数压入栈
sipush 将16位带符号整数压入栈
ldc 把常量池中的项压入栈
ldc_w 把常量池中的项压入栈(使用宽索引)
ldc2_w 把常量池中long类型或者double类型的项压入栈(使用宽索引)

1.2 从栈中的局部变量中装载值的指令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值