• 技术文章 >常见问题

    堆栈区别

    藏色散人藏色散人2020-09-05 16:54:52原创22416

    堆和栈的区别:

    一、堆栈空间分配区别:

    1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;

    2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

    二、堆栈缓存方式区别:

    1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;

    2、堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。

    堆:内存中,存储的是引用数据类型,引用数据类型无法确定大小,堆实际上是一个在内存中使用到内存中零散空间的链表结构的存储空间,堆的大小由引用类型的大小直接决定,引用类型的大小的变化直接影响到堆的变化

    栈:是内存中存储值类型的,大小为2M,超出则会报错,内存溢出

    三、堆栈数据结构区别:

    堆(数据结构):堆可以被看成是一棵树,如:堆排序;

    栈(数据结构):一种先进后出的数据结构。

    特点:先进后出

    对于先进后出,因为Linklist底层实现的是链表结构,所以我们拿Linklist来探索一下什么叫先进后出

    代码如下:

    package com.zking.list;
     
    import java.util.LinkedList;
     
    public class Linklisttest {
     
    public static void main(String args[]) {
    LinkedList ll = new LinkedList();
    for (int i = 0; i < 5; i++) {
    ll.addFirst(i);
    }
     
    ll.removeFirst();
     
    for (Object object : ll) {
    System.out.println(object);
    }
     
    }
     
    }

    运行结果:

    4ef9e16cf2f2b673738591023bb3907.png

    根据这个简单的实例我们可以看出,通过for循环我们在集合添加数据的顺序分别为0,1,2,3,4,

    当执行删除方法的时候4被删除,最后遍历出的结果为3,2,1,0

    所以它体现了堆栈的特点:先进后出。。

    以上就是堆栈区别的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:堆栈区别
    上一篇:网络拓扑结构有几种 下一篇:ui和ue的区别

    相关文章推荐

    • Java中的堆、栈和堆栈有何区别?Java中的堆、栈和堆栈的区别介绍• PHP怎么打印调用堆栈• 数据结构:堆栈和队列之间的差异• Perl中如何实现堆栈

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网