面试再问你什么是堆和栈,你就把这篇文章甩给他

堆和栈

栈:管程序如何运行的,程序如何执行,如何处理数据。(局部变量其实也是存在栈中的,引用数据类型在栈中存的是地址引用)(栈的空间就不需要那么大了)

堆:管数据存储的。(引用数据类型的存放,所以堆的空间是比较大的)

栈的作用

主管Java程序的运行,它保存方法的局部变量(8种基本数据类型、对象的引用地址)、部分中间的结果,并参与方法的调用和返回。我们先粗粒度感受一个栈的结构:

每个线程都有自己的栈,栈中的数据都是以栈帧(stack Frame)的格式为基本单位进行存储的。(栈中保存的就是一个个栈帧)

在这个线程上正在执行的每个方法都各自对应一个栈帧。方法和栈帧一一对应,一个方法的执行会伴随这栈帧入栈,一个方法的结束会拌嘴栈帧的出栈)

栈中是否存在垃圾回收

不存在,栈中就是入栈出栈。

假如底层用数组实现的话,其实就是移动下标的。

模拟栈结构C语言代码:(栈用数组实现) https://www.jb51.net/article/69375.htm 栈和队列,是操作受限制的线性表,既然是线性表,那么你用顺序表,链表都可以实现。堆:利用完全二叉树的结构来维护一组数据

猜你喜欢

转载自blog.csdn.net/Crystalqy/article/details/107456425
今日推荐