zoukankan      html  css  js  c++  java
  • 堆栈的分配效率问题

    前面已经总结过堆和栈的区别,这里着重在分配效率方面区别二者。

    栈的分配效率是要比堆高的,那么为什么呢?

    分配效率:栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。堆则是C/C++函数库提供的,它的机制是很复杂的,例如为了分配一块内存,库函数会按照一定的算法(具体的算法可以参考数据结构/操作系统)在堆>内存中搜索可用的足够大小的空间,如果没有足够大小的空间(可能是由于内存碎片太多),就有可能调用系统功能去增加程序数据段的内存空间,这样就有机会>分到足够大小的内存,然后进行返回。显然,堆的效率比栈要低得多。

     栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
    堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。

  • 相关阅读:
    python学习之控制语句
    linux中的网络基础
    python学习之准备
    linux用户权限
    python学习之函数和函数参数
    python学习之输出与文件读写
    linux中的vim编辑器的使用
    从产品和用户角度,思考需求和用户体验
    好记性不如烂笔头
    TI DaVinci(达芬奇)入门
  • 原文地址:https://www.cnblogs.com/mini-coconut/p/9261048.html
Copyright © 2011-2022 走看看