jvm内存模型分析之方法执行的过程

本文通过反编译Java类,详细解析了JVM方法执行过程,以get方法为例,展示了如何使用javap命令查看字节码,理解JVM指令集及栈帧操作。

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

原文:http://www.jiajiajia.club/weblog/blog/artical/84

jvm内存模型分析(1)已经对内存模型进行了一个宏观的概括 

http://www.jiajiajia.club/weblog/blog/artical/82

那么下边具体分析一下方法执行的过程

还是以一个简单的类开始

public class Tests {
      
    public int get() {
        int a=1;
        int b=2;
        int c=(a+b)*10;
        return c;
    }
      
    public static void main(String[] args) {
        Tests s=new Tests();
        s.get();
    }
}

 首先我们用javap命令对上面的类进行反编译,得到如下:

Compiled from "Tests.java"
public class jvm.Tests {
  public jvm.Tests();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return
 
  public int get();
    Code:
       0: iconst_1
       1: istore_1
       2: iconst_2
       3: istore_2
       4: iload_1
       5: iload_2
       6: iadd
       7: bipush        10
       9: imul
      10: istore_3
      11: iload_3
      12: ireturn
 
  public static void main(java.lang.String[]);
    Code:
       0: new           #1                  // class jvm/Tests
       3: dup
       4: invokespecial #22                 // Method "<init>":()V
       7: astore_1
       8: aload_1
       9: invokevirtual #23                 // Method get:()I
      12: pop
      13: return
}

那我们就以get方法为例说明:

首先贴出,jvm指令集,方便查找:jvm指令集

 

方法结束后,栈帧将被销毁~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值