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

硅谷探秘者 4033 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) 2425 jvm(1)Java虚拟机在Java中会把它所管理为若干个不同数据区域jvm包括三大子系统:类加载子系统,运时数据区(结构),引擎详细图示
java虚拟机(jvm) 2813 jvm(5)堆溢出以及1.拟堆溢出代码packagetest;importjava.util.ArrayList;importjava.util.List
java虚拟机(jvm) 3173 (StackFrame)用于储局部变量表、操作数栈、动态链接、出口等信息。局部变量表是一组变量值储空间,用于参数和部定义局部变量。在Java序被编译为Class文件时,就在Code属性
java虚拟机(jvm) 4123 Jvm-class文件结构以下面类为例介绍一下class文件结构packagejvm;publicclassMainTest{publicstaticinta=0
java虚拟机(jvm) 937 jvm-垃圾收集器和配策略(1)说起垃圾收集(GarbagcCollcction,GC),大部人都把这项技术当做java语言伴生产物。事实上,GC历史比Java久远,1960
java虚拟机(jvm) 827 象,它标记其实在前一节讲述对象标记判定时已经介绍了。所以说它是最基础收集算,是因为后续收集算都是基于这种思路并对其不足进改进而得到。它主要不足有两个:一个是效率问题,标记和清除两
java虚拟机(jvm) 1716 这里以HotSpot为例,且所说对象指普通Java对象,不包括数组和Class对象等。参考资料深入理解java虚拟机《周志明》1.对象布局HotSpot虚拟机中,对象在布局可以
java虚拟机(jvm) 3127 类加载时机类从被加载到虚拟机中开始,到卸载出为止,它整个生命周期包括:加载(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
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。