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

本文详细解析了操作系统中堆和栈的概念及区别,包括它们在数据结构上的特性、内存分配方式、生命周期管理等方面的内容,并特别针对Java语言中的堆栈使用进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

    参考:http://blog.youkuaiyun.com/guan_sen/article/details/78769487

--堆栈是两种数据结构

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

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

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

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

Java中堆栈的区别

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

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

Java变量在内存中的分配

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值