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

2019 精帖
1 3120

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指令集

QQ截图20190108122703.png

开始进入get方法,局部变量表和操作数都为空:

1.png

2.png

3.png

4.png

5.png

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



留言(0)
加载更多
猜你喜欢
  • ofc 单例5种实现-设计

    单例5种实现-设计
  • blog springboot项目启动后特定

    springboot项目启动后特定 有时项目需求,需要项目启动时候向数据库中查询一下系统属性,或者需要加载某个特定。那么在springboot中可以用如下实现第一种实现,实现ApplicationRunne
  • ofc sql顺序和顺序

    sql顺序和顺序
  • blog java线通讯生产者消费者

    java线通讯生产者消费者式         生产者消费者式是并发、多线中经典设计式,生产者和消费者通工作解耦,简化了开发式,生产者和消费者可以以不同速度生产和消费
  • blog 并发编-java线(JMM)和volatile关键字理解

    硬件效率与一致性         在正式讲解Java虚拟机并发相关知识前,我们先花费一点时间去了解一下物理计算机中并发问题,物理机遇到并发问题与虚拟机中情况有不少相似处,物理机对并发
  • blog java工具 jmap 命令使用以及堆快照创建及(1)

            jmap是java虚拟机自带一种映像工具,我们可以通该工具配合不同参数来查看java虚拟机详细信息(如序中出现所有对象数量以及占用大小等),以及通虚拟机
  • blog java-java虚拟机栈最大深度问题与优化

    Java虚拟机栈都包含那些东西         在阅读深入理解java虚拟机以后了解到java虚拟机栈包括栈帧、局部变量表、操作数栈、动态链接、返回等。 Java虚拟机栈都储那些容呢
  • blog 面试题servlet

    1.浏览器请求浏览器向服务器请求时,服务器不会直接我们类,而是到web.xml里寻找路径名 ①:第一步,浏览器输入访问路径后,携带了请求,头,体 ②:第二步,根据访问路径找到已注册servlet名称③:第三步,根据映射找到对应s
  • blog java-hotspot虚拟机对象探秘

    Java对象创建 Java是一门面向对象语言,在Java序运中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论对象限于普通Java对象,不
  • blog springmvc

    1.springmvc图:2.1.一个url请求该站点前端控制器DispatcherServlet。2.随后DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url