java学习的第三天,今天学习了内存图的画法,通过内存图来分析Java的方法运行过程
前言
在执行程序的过程中,我们想要知道程序的具体流动过程,我们可以利用内存图来分析,也可以画出它的流程图,当然也可以debug它,查看具体的变量的值
提示:以下是本篇文章正文内容,下面案例可供参考
一、利用内存图进行分析程序?
public class MethodTest2 {
public static void main(String []args) {
int a = 10;
int b = 20;
int retvalue = sumInt(a,b);
System.out.println("retvalue="+retvalue);
}
public static int sumInt(int i,int j) {
int result = i+j;
int num = 3;
int retvalue = devide(result,num);
return retvalue;
}
public static int devide(int x,int y) {
int z = x/y;
return z;
}
}
对程序进行分析:
- 在jvm中的栈(stack)中进入的是main()方法;
- 在main中分别有俩自己的成员变量a = 10,b = 20;
- 然后在执行中碰见了sunInt();
- 于是sunInt()入栈,并将a和b的值传给i,j;
- 然后在执行中又碰见了devide();
- 于是devide()入栈,并将result和num的值传给x,y;
- 在devide()中,CPU进行运算,将结果10的值给z;
- devide()出栈,并将z的值赋值给retvalue;
- sunInt()出栈,并将retvalue的值赋给main()中的retvalue。
二、利用debug进行分析
当执行完b的值为20时,代码直接跳转到下图
将a,b的值赋值给i,j,当代码执行到如下时,跳转
现在得到z的值后返回
继续返回
ok,现在完全结束,一切搞定。