浅层了解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);
    }
}

  结果:

原文地址:https://www.cnblogs.com/Unlimited-Rain/p/12465747.html