一、"函数之间无限次调用" 引发栈溢出
public class MyTools { //写两个方法,互相调用对方 public void function1(){ function2(); System.out.println("功能1"); } public void function2(){ function1(); System.out.println("功能2"); } }
public class Main { public static void main(String[] args) { MyTools mt=new MyTools(); mt.function1(); } }
结果:
二、图示解析
1.栈是一种先进后出的数据结构
2.函数在内存中被放进栈中,按照调用顺序放进栈,按照先进后出出栈
3.而一中栈的溢出,是由于函数无限次被调用,没有出栈或者结束的出口而导致的
三、内存溢出
public class Main { public static void main(String[] args) { String str="IloveyouIloveyouIloveyouIloveyouIloveyou"; for(int i=0;i<100;i++){ str=str+str; } System.out.println(str); } }
结果: