- 操作系统中 heap 和 stack 的区别。
--堆栈是两种数据结构
堆栈都是一种数据项按序排列的数据结构,只能在一端对数据项进行插入和删除。
在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存储数据和地址。
栈:由系统自动分配释放,存放函数的参数值,局部变量;使用一级缓存,调用完毕立即释放
堆:由程序员分配释放,程序结束时由OS回收;二级缓存,生命周期由垃圾回收算法决定
Java中堆栈的区别
栈:函数中一些基本类型变量和对象引用变量
堆 : 存放由new创建的对象和数组,可以将对象和数组的地址存放在栈中
Java变量在内存中的分配
类变量(static修饰):在程序加载时,系统就在堆内存中为它分配,地址则存放在栈中。静态变量的生命周期一直持续到整个系统关闭。
实例变量:当new时,系统在堆中开辟空间给实例,通过哈希算法将地址换算成一串数字,表示“物理位置”。实例变量引用丢失后,被GC收入名单,但不会立即从堆中释放。
局部变量:在方法或代码块中,执行到时在栈中开辟内存,当他脱离作用域时,内存立即释放。