你真的了解java中方法执行时的内存变化嘛?
2021/10/5 7:10:54
本文主要是介绍你真的了解java中方法执行时的内存变化嘛?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
首先我们要知道java中的jvm主要有三块内存空间:栈,堆,方法区(当然除了这三个还有别的,这里我们只讨论这三个。)
首先我们来说说方法区:类加载器会将硬盘上的.class字节码文件装载到jvm的时候,会将字节码文件存放到方法区当中,就是说方法区存放的是代码片段。(因为类需要加载,所以方法区当中最先有数据)
栈:当我们的方法被调用的时候,该方法需要的内存空间就会在栈中分配(没有调用的时候就还是老实的呆在方法区当中)。栈这种数据结构的特点是先进的后出,如图:
知道这些之后我们可以来看一道程序:
下面我们来根据上面的理论来分析,首先会在我们的方法区加载,意思就是我们的main(),testone(),testtwo(),testthree()都会先放在我们的方法区。然后main方法会首先自动进入我们的栈,第一个入栈,它会执行一个int x = 10,然后输出main start,接着再调用我们的testone()方法,这时候我们的testone()入栈,主导权就交到了testone()手上,会输出我们testone()中定义的东西,以此类推,当我们栈顶是testthree()时,testthree()没再调用任何方法,会都执行完,执行完之后就会出栈,接着并是我们的testtwo()在我们的栈顶,以此类推。
这篇关于你真的了解java中方法执行时的内存变化嘛?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide