Java教程

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

本文主要是介绍你真的了解java中方法执行时的内存变化嘛?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

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

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

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

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

 

这篇关于你真的了解java中方法执行时的内存变化嘛?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!