定义:
堆(heap):
- 队列优先,先进先出(FIFO—first in first out)。
- 是随机存储在内存上的数据,由垃圾系统回收,如果没有主动清除掉,有可能会导致内存泄漏
栈 (stack) :
- 堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除
- 先进后出(FILO—First-In/Last-Out) 或者LIFO
- 也是存在寄存器上,它的读写速度是和cpu的运行速度一样快的,在程序运行完后,会被立即清除
- 栈在计算机世界里,拥有着不可思议的作用
- 子程序调用
- 递归
- 括号匹配
- 遍历 对象树
Detail:
堆(heap)
- 堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。
- heap的空间是手动申请和释放的,heap常用new关键字来分配 (java)
- 对象和function是存在heap里面的
栈 (stack) :
- 栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
- 由系统分配用完后,由系统销毁
- 撤销
Resource:
. https://blog.csdn.net/u014306011/article/details/51044091
. https://www.cnblogs.com/chengguanhui/p/4737413.html js 上的stack和heap的区别
. http://www.ruanyifeng.com/blog/2013/11/stack.html 清晰明了的好文
. https://blog.csdn.net/younkerjqb/article/details/53432422 计算机存储详解