栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

你真的了解java中方法执行时的内存变化嘛?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

你真的了解java中方法执行时的内存变化嘛?

首先我们要知道java中的jvm主要有三块内存空间:栈,堆,方法区(当然除了这三个还有别的,这里我们只讨论这三个。)

 首先我们来说说方法区:类加载器会将硬盘上的.class字节码文件装载到jvm的时候,会将字节码文件存放到方法区当中,就是说方法区存放的是代码片段。(因为类需要加载,所以方法区当中最先有数据)

栈:当我们的方法被调用的时候,该方法需要的内存空间就会在栈中分配(没有调用的时候就还是老实的呆在方法区当中)。栈这种数据结构的特点是先进的后出,如图:

 知道这些之后我们可以来看一道程序:

下面我们来根据上面的理论来分析,首先会在我们的方法区加载,意思就是我们的main(),testone(),testtwo(),testthree()都会先放在我们的方法区。然后main方法会首先自动进入我们的栈,第一个入栈,它会执行一个int x = 10,然后输出main start,接着再调用我们的testone()方法,这时候我们的testone()入栈,主导权就交到了testone()手上,会输出我们testone()中定义的东西,以此类推,当我们栈顶是testthree()时,testthree()没再调用任何方法,会都执行完,执行完之后就会出栈,接着并是我们的testtwo()在我们的栈顶,以此类推。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/294687.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号