说一下堆栈的区别?队列和栈是什么?有什么区别?

说一下堆栈的区别,那么堆和栈到底有什么区别?

1.物理地址

堆的物理地址分配对对象是不连续的。因此性能慢些。在GC的时候也要考虑到不连续的分配,所以有各种算法。比如,标记-消除,复制,标记-压缩,分代(即新生代使用复制算法,老年代使用标记——压缩)

栈使用的是数据结构中的栈,先进后出的原则,物理地址分配是连续的。所以性能快。

2.内存分别

堆因为是不连续的,所以分配的内存是在运行期确认的,因此大小不固定。一般堆大小远远大于栈。

栈是连续的,所以分配的内存大小要在编译期就确认,大小是固定的。

3.存放的内容

堆存放的是对象的实例和数组。因此该区更关注的是数据的存储

栈存放:局部变量,操作数栈,返回结果。该区更关注的是程序方法的执行。

4.程序的可见度

堆对于整个应用程序都是共享、可见的。

栈只对于线程是可见的。所以也是线程私有。他的生命周期和线程相同。

说一下堆栈的区别,队列和栈是什么,堆栈以及队列有什么区别

队列和栈是什么?有什么区别?

队列和栈都是被用来预存储数据的。

  • 操作的名称不同。队列的插入称为入队,队列的删除称为出队。栈的插入称为进栈,栈的删除称为出栈。
  • 可操作的方式不同。队列是在队尾入队,队头出队,即两边都可操作。而栈的进栈和出栈都是在栈顶进行的,无法对栈底直接进行操作。
  • 操作的方法不同。队列是先进先出(FIFO),即队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(不能从中间插入),每次离开的成员总是队列头上(不允许中途离队)。而栈为后进先出(LIFO),即每次删除(出栈)的总是当前栈中最新的元素,即最后插入(进栈)的元素,而最先插入的被放在栈的底部,要到最后才能删除。
声明:所有内容均收集于网络,收集的内容仅供内部学习和讨论,建议您在下载后的24个小时之内从您的电脑或手机中删除上述内容,如果您喜欢该内容,请支持并购买正版资源。如若本站内容侵犯了原著者的合法权益,请联系邮箱648765304@qq.com,我们将及时处理,本文链接:https://dbbp.net/632.html
0

评论0

站点公告

小虎资源网因各项成本逐渐加大,优质课程资源不断增多,明日将会恢复至原价499一年,今日只需299开通年费会员,后续续费每年9.9元。网站始于2020年,稳定运行超过5年,每日更新,全站课程不加密,目前已收录全网五十多家机构,累积更新各大机构一百多T教程,总课程价值超过百万,比我们便宜的没有我们全,和我们一样全的没我们便宜,抓紧时间提升自己最重要。会员权益查看:点击会员介绍 其他加密课程或者代找其他课程联系微信:648765304
显示验证码
没有账号?注册  忘记密码?