JVM--理解栈 & 队列 & 栈 + 堆 + 方法区的交互关系

Posted Z && Y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM--理解栈 & 队列 & 栈 + 堆 + 方法区的交互关系相关的知识,希望对你有一定的参考价值。

1. 深入理解栈 & 队列


1.1 栈

栈: 一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。
在这里插入图片描述


1.1.1 理解: 为什么main方法先执行,最后结束

请看这段代码:在主方法里面调用了4个方法。

public class Test {
    public static void main(String[] args) {
        t1();
        t2();
        t3();
        t4();
    }

    public static void t1() {
        System.out.println("t1");
    }

    public static void t2() {
        System.out.println("t2");
    }

    public static void t3() {
        System.out.println("t3");
    }

    public static void t4() {
        System.out.println("t4");
    }
}

在这里插入图片描述
栈:栈内存,主管程序的运行,生命周期和线程同步; 线程结束,栈内存也就是释放,对于栈来说,不存在垃圾回收问题 一旦线程结束,栈就Over! 栈内存中:


1.1.2 栈里面会存放些什么

  • 8大基本类型: byte 、short、 int 、double 、char、 long 、float、 boolean
  • 对象引用
  • 实例方法(没有用static修饰,也叫非静态方法)

1.1.3 栈溢出异常

package packge01;

public class Test {
    public static void main(String[] args) {
        t1();
    }

    public static void t1() {
        t2();
    }

    public static void t2() {
        t1();
    }
}

在这里插入图片描述
在这里插入图片描述


1.2 队列

队列:先进先出( FIFO : First Input First Output )
在这里插入图片描述


1.3 栈 + 堆 + 方法区的交互关系

在这里插入图片描述



以上是关于JVM--理解栈 & 队列 & 栈 + 堆 + 方法区的交互关系的主要内容,如果未能解决你的问题,请参考以下文章

脑筋急转弯:如何用两个栈实现一个队列 && 如何用两个队列实现一个栈

脑筋急转弯:如何用两个栈实现一个队列 && 如何用两个队列实现一个栈

python 栈&队列&列表的区别

javajava两个栈实现一个队列&两个队列实现一个栈

栈&队列&堆

剑指Offer 5. 用两个栈实现队列 (栈)