栈的效率为什么比堆高?

Posted mataiyuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈的效率为什么比堆高?相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

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

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

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

以上是关于栈的效率为什么比堆高?的主要内容,如果未能解决你的问题,请参考以下文章

怎么将一堆高性能电脑硬件组成超级计算机?

为啥NOT IN比NOT EXISTS效率差

scanf为啥比cin效率要高?

Full GC为什么那么慢?为什么老年代垃圾回收效率比新生代低很多?为什么Minor gc速度比Major GC慢?

为什么存储过程比sql语句效率高?

Mysql 为什么 select * 比 select 字段效率低?