递归代码的内存图图示
- 代码如下:
public class Test
{
static int i = 0;
public static void main(String[] args)
{
System.out.println("main start!");
m1();
System.out.println("main over!");
}
static void m1(){
System.out.println("m1----start");
i++;
if(i > 1)
return;
else
m1();
System.out.println("m1----over");
}
}
/*
main start!
m1----start
m1----start
m1----over
main over!
*/
- 内存图详解如下
这种方式演示出来的效果并不是特别好 弹栈之后那一块内存释放 这张图表现不出来。。。。
不过有一点需要提醒的是:
尽量不要在java中使用递归,因为递归的方法全会占用栈的内存空间,很容易导致栈内存溢出(stack over flow)
要是误写递归没有递归出口的话必定会造成JVM崩溃
但就算写了递归出口 但递归过深 同样也会造成栈内存溢出 JVM也会崩溃
所以 还是尽量不要使用递归