美文网首页
栈为什么效率比堆高

栈为什么效率比堆高

作者: 星期天去哪玩o | 来源:发表于2018-10-27 16:01 被阅读0次

栈为什么效率比堆高

总结如下:

1、有寄存器直接对栈进行访问(esp,ebp),而对堆访问,只能是间接寻址。

也就是说,可以直接从地址取数据放至目标地址;使用堆时,第一步将分配的地址放到寄存器,然后取出这个地址的值,然后放到目标地址。

2、栈中数据cpu命中率更高,满足局部性原理。

3、栈是编译时系统自动分配空间,而堆是动态分配(运行时分配空间),所以栈的速度快。

4、栈是先进后出的队列结构,比堆结构相对简单,分配速度大于堆。

“堆”和“栈”并不是数据结构上的Heap跟Stack,而是程序运行中的不同内存空间。

那么这就简单了,栈是程序启动的时候,系统分好了给你的,你自己用,系统不干预。

堆是用的时候才向系统申请的,用完了还回去,这个申请和交还的过程开销相对就比较大了。

栈与堆都是Java用来在Ram中存放数据的地方。

栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)。 存在栈中的数据可以共享。栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。

堆是一个运行时数据区,类的(对象从中分配空间。由于要在运行时动态分配内存,存取速度较慢。 存在栈中的数据可以共享。

栈是编译时分配空间,而堆是动态分配(运行时分配空间),所以栈的速度快

cpu有专门的寄存器(esp,ebp)来操作栈,堆都是使用间接寻址的。栈快点

相关文章

  • 栈为什么效率比堆高

    栈为什么效率比堆高 总结如下: 1、有寄存器直接对栈进行访问(esp,ebp),而对堆访问,只能是间接寻址。 也就...

  • 内存存储细节

    堆区: 类对象(方法列表), 实例对象(isa指针, 属性列表) 栈区:指针 类方法比实例方法执行效率高

  • JS深拷贝和浅拷贝的理解

    一、为什么基本数据类型保存在栈中,而引用数据类型保存在堆中?(1)堆比栈大,栈比堆速度快;(2)基本数据类型比较稳...

  • iOS中的Block , Stack, Heap

    复习下block和内存相关的知识 Stack(栈) & Heap(堆) 栈的读写速度比堆快,这就解释了为什么方法中...

  • block块

    Block比之C函数,其灵活性体现在栈内存、堆内存的引用。 Block是苹果推荐的类型,效率高,可以帮助我们组织独...

  • 栈为什么比堆小

    栈只是的名词,我们的关注点是它的功能,栈的功能主要是函数调用、局部变量申请、函数参数传递所使用的空间,是为函数调用...

  • 栈与堆讲解--(面试题)

    栈和堆的区别是什么? 为什么说栈的速度快,堆的速度慢?(为什么栈的储存分配比堆存储分配快) 一、问题 1、为什么栈...

  • iOS知识点总结(一)

    1. 堆和栈 1.1为什么有堆和栈? : 移动设备的内存是有限的,每个App所占的内存都有一定限制,所以需要堆和栈...

  • 理解Linux堆内存管理

    一、堆的基础知识 1.1 堆的内存布局 1.2 堆和栈的区别 栈主要用来维护函数调用的上下文,由高向低增长; 堆用...

  • 10.11java中的堆和栈

    java高级-堆和栈 java堆 /栈 栈内存 / 堆内存的区别 1. java堆 /栈 2. 栈内存 / 堆内存的区别

网友评论

      本文标题:栈为什么效率比堆高

      本文链接:https://www.haomeiwen.com/subject/qqnsxxtx.html