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

硅谷探秘者 4496 0 1

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

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




评论区
请写下您的评论...
暂无评论...
猜你喜欢
java虚拟机(jvm) 2814 jvm(1)Java虚拟机在Java中会把它所管理为若干个不同数据区域jvm包括三大子系统:类加载子系统,运时数据区(结构),引擎详细图示
java虚拟机(jvm) 3297 jvm(5)堆溢出以及1.拟堆溢出代码packagetest;importjava.util.ArrayList;importjava.util.List
java虚拟机(jvm) 3656 (StackFrame)用于储局部变量表、操作数栈、动态链接、出口等信息。局部变量表是一组变量值储空间,用于参数和部定义局部变量。在Java序被编译为Class文件时,就在Code属性
java虚拟机(jvm) 5337 Jvm-class文件结构以下面类为例介绍一下class文件结构packagejvm;publicclassMainTest{publicstaticinta=0
java虚拟机(jvm) 1355 jvm-垃圾收集器和配策略(1)说起垃圾收集(GarbagcCollcction,GC),大部人都把这项技术当做java语言伴生产物。事实上,GC历史比Java久远,1960
java虚拟机(jvm) 1206 象,它标记其实在前一节讲述对象标记判定时已经介绍了。所以说它是最基础收集算,是因为后续收集算都是基于这种思路并对其不足进改进而得到。它主要不足有两个:一个是效率问题,标记和清除两
java虚拟机(jvm) 2192 这里以HotSpot为例,且所说对象指普通Java对象,不包括数组和Class对象等。参考资料深入理解java虚拟机《周志明》1.对象布局HotSpot虚拟机中,对象在布局可以
java虚拟机(jvm) 3542 类加载时机类从被加载到虚拟机中开始,到卸载出为止,它整个生命周期包括:加载(LoadingVerification)、准备(Preparation)、解(Resolution)、初始化
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。