首页 > 试题广场 >

堆与栈的区别是什么?

[问答题]
介绍一下,堆与栈的不同是什么?

要点:堆:顺序随意      栈:后进先出(Last-In/First-Out)

1.堆栈空间分配

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

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

2.堆栈缓存方式

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

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

3.堆栈数据结构区别

①堆(数据结构):堆可以被看成是一棵完全二叉树树,如:堆排序。

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


发表于 2019-04-23 20:28:05 回复(0)
堆:顺序随意;栈:后进先出(Last in/First out)
发表于 2020-07-22 10:28:30 回复(0)
Java的堆是一个运行时数据区,类的对象从中分配空间。通过比如:new等指令建立,不需要代码显式的释放,由垃圾回收来负责。 栈,其数据项的插入和删除都只能在称为栈顶的一端完成,后进先出。栈中存放一些基本类型的 变量 和 对象句柄。
发表于 2019-04-26 19:02:51 回复(0)
栈是先进后出的结构,堆则是随意操作的。
发表于 2019-03-20 22:59:08 回复(0)
堆是系统自动分配的,用于存放局部变量、函数等。而堆的使用由程序员决定,他的大小取决于剩余可用的内存大小
发表于 2019-03-11 19:31:18 回复(0)