jvm内存模型分析(2)之方法执行的过程
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指令集
开始进入get方法,局部变量表和操作数都为空:
方法结束后,栈帧将被销毁~
评论区
请写下您的评论...
猜你喜欢
blog
jvm内存模型分析(1)
java虚拟机(jvm)
3028
jvm内存模型分析(1)Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域jvm包括三大子系统:类加载子系统,运行时数据区(内存结构),执行引擎详细图示
java虚拟机(jvm)
3574
jvm内存模型分析(5)堆内存溢出以及分析1.模拟堆内存溢出代码packagetest;importjava.util.ArrayList;importjava.util.List
blog
jvm内存模型分析(3)之局部变量表
java虚拟机(jvm)
3916
(StackFrame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。在Java程序被编译为Class文件时,就在方法的Code属性
blog
Jvm内存模型分析-class文件结构
java虚拟机(jvm)
6005
Jvm内存模型分析-class文件结构以下面的类为例介绍一下class文件的结构packagejvm;publicclassMainTest{publicstaticinta=0
java虚拟机(jvm)
1598
jvm内存模型分析-垃圾收集器和内存分配策略(1)说起垃圾收集(GarbagcCollcction,GC),大部分人都把这项技术当做java语言的伴生产物。事实上,GC的历史比Java久远,1960
blog
jvm内存模型分析-垃圾收集算法
java虚拟机(jvm)
1446
象,它的标记过程其实在前一节讲述对象标记判定时已经介绍过了。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进而得到的。它的主要不足有两个:一个是效率问题,标记和清除两
java虚拟机(jvm)
2463
这里以HotSpot为例,且所说的对象指普通的Java对象,不包括数组和Class对象等。参考资料深入理解java虚拟机《周志明》1.对象的内存布局HotSpot虚拟机中,对象在内存中存储的布局可以
java虚拟机(jvm)
3816
类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(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
2024-08
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
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。