浅层了解Java栈溢出与内存溢出——Java面向对象基础(8)

一、"函数之间无限次调用" 引发栈溢出

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);
    }
}

  结果:

 

posted @ 2020-03-11 21:49  Unlimited_Rain  阅读(131)  评论(0编辑  收藏  举报