码迷,mamicode.com
首页 > 其他好文 > 详细

堆栈的分配效率问题

时间:2018-07-03 23:40:21      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:功能   效率   系统   存储空间   指令   支持   库函数   结构   一级缓存   

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

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

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

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

堆栈的分配效率问题

标签:功能   效率   系统   存储空间   指令   支持   库函数   结构   一级缓存   

原文地址:https://www.cnblogs.com/mini-coconut/p/9261048.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!