Java中的运行时堆栈
2015-08-20 11:40
447 查看
Java中的运行时堆栈
本文主要介绍Java中的运行时堆栈和Java方法调用的过程,如有疑问,欢迎讨论。Java中方法的调用过程
首先用一张图来展现Java中整个方法的调用流程。注意:在以下的叙述中,正在运行的系统将采用运行时系统来统称。
在上面这张图中,我们能够很清晰的看到方法的调用过程,当一个方法被调用时:
首先,运行时系统会调用一条语句来创建一个活动记录,活动记录包括了调用该方法时的实参列表、方法内的局部变量和对象以及一个返回地址。
然后,运行时系统会将活动记录压入运行时堆栈,接着执行被调用方法的方法体。
最后,在方法体内的语句执行完成后,运行时系统会读取活动记录中的返回地址,同时将该活动记录弹出运行时堆栈。
最终,运行时系统从取得的返回地址处继续执行程序。
Java中的运行时堆栈
从上面方法执行过程的介绍中,我们应该已经对运行时堆栈有了一个大体的认识。运行时堆栈是用来存储活动记录的数据结构。
运行时堆栈在单个方法的调用中的作用看起来不是很明显,但是在递归中,运行时堆栈就显得格外重要。
接下来通过阶乘运算的求解来介绍一下运行时堆栈在递归中的应用。
public Class TestFact { public static void main(String[] args) { int result; //...... result = fact(5); System.out.println("结果是:" + result); } public static int fact(int num) { if(num == 0) { return 1; } else { return num * fact(num - 1); } } }
fact()方法的活动记录为(fact方法没有定义局部变量):
在main()方法中调用fact(5)时,运行时堆栈的工作流程如下图:
如上图所示,在调用fact()方法时,相对应的活动记录依次入栈,当实参(num)为0时,递归调用停止,接下来就是递归的返回流程,最终得到要求得的阶乘结果。
总结
以上就是我对Java运行时堆栈的理解,如有不足,欢迎大家指正和讨论。本文为本人原创,转载请注明出处:http://blog.csdn.net/wy_zhang/article/details/47954781
本文为转载,原文地址为:http://blog.csdn.net/wy_zhang/article/details/47954781
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树