JAVA方法内存分析
为了让大家对方法的使用更加根深蒂固,我们将对程序方法的执行中,内存到底发生了什么变化进行剖析,让大家做到“心中有数”,通过更加形象生动的方式理解去理解方法的执行过程。
JVM内存划分
大家都知道jvm是Java虚拟机,计算机会在内存空间中给jvm分配一块内存空间。我们根据程序的不同需求,给jvm划分了方法栈,堆,和方法区。
方法栈:方法运行的地方
堆:存储对象、数组
方法区/数据共享区:class文件进入的地方
代码详解内存分析
今天着重给大家讲解方法调用的时候内存的运行过程。
上代码
public class Demo{
public static void main(String[] args){
System.out.println(getArea(7,3));
}
public static int getArea(int a, int b){
return a+b;
}
}
程序要用行,先把class文件加载到内存方法区中,jvm默认调用主方法(main)方法进栈运行,逐行执行主方法里的代码,运行到getArea(7,3),调用getArea(int a, int b)方法,然后此方法入栈执行,把实参7,3赋值给方法,执行方法中的代码return a+b,把getArea()的返回值返回给main方法,getArea()方法执行完出栈,然后继续执行main方法输出打印,主方法执行完,弹栈释放内存。
图解如下
下篇讲解面向对象内存分析。欢迎关注。