Java 面试200题 之基本概念----操作系统中 heap 和 stack 的区别

  1. 操作系统中 heap 和 stack 的区别。

    参考:http://blog.csdn.net/guan_sen/article/details/78769487

--堆栈是两种数据结构

堆栈都是一种数据项按序排列的数据结构,只能在一端对数据项进行插入和删除。

在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存储数据和地址。

栈:由系统自动分配释放,存放函数的参数值,局部变量;使用一级缓存,调用完毕立即释放

堆:由程序员分配释放,程序结束时由OS回收;二级缓存,生命周期由垃圾回收算法决定

Java中堆栈的区别

栈:函数中一些基本类型变量和对象引用变量

堆 : 存放由new创建的对象和数组,可以将对象和数组的地址存放在栈中

Java变量在内存中的分配

类变量(static修饰):在程序加载时,系统就在堆内存中为它分配,地址则存放在栈中。静态变量的生命周期一直持续到整个系统关闭。

实例变量:当new时,系统在堆中开辟空间给实例,通过哈希算法将地址换算成一串数字,表示“物理位置”。实例变量引用丢失后,被GC收入名单,但不会立即从堆中释放。
局部变量:在方法或代码块中,执行到时在栈中开辟内存,当他脱离作用域时,内存立即释放。

 

没有更多推荐了,返回首页