堆和栈的区别:
一、堆栈空间分配区别:
1.栈(操作系统):由操作系统自动分配和释放,用于存储函数的参数值和局部变量的值。它的操作模式类似于数据结构中的栈;
2.堆(操作系统):一般由程序员分配和释放。如果程序员不释放它,操作系统可能会在程序结束时回收它。分配方法类似于链表。
二、堆栈缓存方式区别:
1.栈使用一级缓存,调用时通常在存储空间,调用后立即释放;
2.堆存储在L2缓存中,其生命周期由虚拟机的垃圾收集算法决定(一旦成为孤立对象,就无法回收)。所以调用这些对象的速度相对较低。
堆:在内存中,存储引用数据类型,不能确定引用数据类型的大小。堆实际上是一个具有链表结构的存储空间,它使用内存中分散的空间。堆的大小直接由引用类型的大小决定,引用类型大小的变化直接影响堆的变化。
堆栈:它是存储在内存中的值类型,大小为2M。如果超过,将报告错误,内存将溢出。
三、堆栈数据结构区别:
堆(数据结构):堆可以看作一棵树,比如:堆排序;
堆栈(数据结构):先进先出的数据结构。
特点:先进后出
对于FIFO,由于Linklist的底层实现是链表结构,所以我们用Linklist来探究什么是FIFO。
代码如下:
运行结果:
根据这个简单的例子,我们可以看到,通过for循环,我们按照0、1、2、3、4,
执行delete方法时,删除4,最终遍历结果为3,2,1,0。
所以它体现了栈的特点:先入后出。