首页

文章

java中堆和栈的区别 面试题

发布网友 发布时间:2022-02-28 14:46

我来回答

3个回答

热心网友 时间:2022-02-28 16:16

Java 把内存划分成两种:一种是栈内存,另一种是堆内存。


在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。   

 

  当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。   

 

堆内存用来存放由new创建的对象和数组。  

在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。   

 

在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。   

 

引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。   

 

java中变量在内存中的分配

 

1、类变量(static修饰的变量):在程序加载时系统就为它在堆中开辟了内存,堆中的内存地址存放于栈以便于高速访问。静态变量的生命周期--一直持续到整个"系统"关闭

 

2、实例变量:当你使用java关键字new的时候,系统在堆中开辟并不一定是连续的空间分配给变量(比如说类实例),然后根据零散的堆内存地址,通过哈希算法换算为一长串数字以表征这个变量在堆中的"物理位置"。 实例变量的生命周期--当实例变量的引用丢失后,将被GC(垃圾回收器)列入可回收“名单”中,但并不是马上就释放堆中内存

 

3、局部变量:局部变量,由声明在某方法,或某代码段里(比如for循环),执行到它的时候在栈中开辟内存,当局部变量一但脱离作用域,内存立即释放

热心网友 时间:2022-02-28 17:34

3、堆和栈的区别!(难)
答案:
栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等
堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
总而言之::栈由系统自动分配,而堆由程序代码控制。

热心网友 时间:2022-02-28 19:08

1.栈内存存储的是局部变量而堆内存存储的是实体;
2.栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短;
3.栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。
视频相册制作软件如何做视频相册? 用word2007自动生成目录后,目录上始终有个“ 更新目录”的框,怎么去... Word2007目录怎么删除正文 手机不能横屏了是怎么回事? 庞贝柱的结构样貌是怎样的? 埃及庞贝柱景点描述 庞贝柱是怎样的历史? 埃及庞贝柱历史追溯 庞贝柱是个什么样的景点? 庞贝柱是为为了答谢谁而建的? 属蛇穿什么转运最旺运 属蛇什么颜色转运最旺 属蛇的人什么颜色转运最旺 英国查理一世时期君主专政的特征 增值税专用发票开错作废证明怎么写 女主为了救男主被拔掉指甲,被活埋,但男主却认错了人,这本小说叫... 什么地方能读到法拉奇的小说男子汉 高级职称有什么待遇 职称高级相当于什么? HUAWEI 华为 AM185 入耳式有线降噪耳机-适用对象 华为FreeBuds Pro有线充版-入耳式真无线动圈主动降噪蓝牙耳机(陶瓷白... HUAWEI 华为 FreeLace Pro 入耳式颈挂式动圈主动降噪蓝牙耳机 曜石黑... HUAWEI 华为 FreeBuds Pro 入耳式真无线动圈主动降噪蓝牙耳机 墨韵白推... 华为Freebuds 3 无线充版半入耳式真无线蓝牙耳机(碳晶黑)-详细介绍... HUAWEI 华为 FreeBuds 悦享版 入耳式无线蓝牙耳机-详细介绍 如何评价华为新旗舰tws耳机freebudspro? HUAWEI 华为 FreeBuds Pro 无线蓝牙耳机推荐 字符串"\\\"ABC\"\\"所占内存字节的长度 怎样挑选千元内的羊绒大衣? 现在思科的CCNA,CCNE,CCIP的考证费分别是多少啊,通过率怎样 长春小飞没有车没有房 碳钢的多久生锈 碳钢多久会生锈 碳钢多长时间会开始生锈 碳钢和铝哪个容易生锈 梦见天宫图是什么意思 光遇2023好友树解锁图鉴 光遇二级节点多少个 ...火柴小女孩》《词语手册》里有很多词语的意思的,求告知 暖融融解释 领淘通淘客助手这个软件怎么样? 淘宝客必备的九大工具有哪些? 电脑里硬盘如何共享怎么实现多台电脑共用一块硬盘 两台电脑一个硬盘两台电脑是否可以同时用一个硬盘 共享电脑硬盘怎样设置局域网电脑硬盘共享 现在下载歌曲好还是不下好 故障码P033D的含义解析 切菜机多功能型切菜机 scanbox三维扫描仪 苹果13没有删除的备忘录怎么恢复? iphone备忘录永久删除怎么恢复?iphone备忘录恢复最近删除文件方法介绍... java中栈和堆的区别求解 java堆和栈的区别图解 面试问java里堆和栈的区别,怎么说 java中 栈和堆的区别? java中栈与堆的区别? java中堆区和栈区的区别 Java 中堆和栈有什么区别 Java堆与栈的区别和联系 java中堆和栈有什么区别? java堆内存和栈内存的区别 Java堆和栈的区别 堆和栈的区 java中堆和堆栈有什么区别 java中堆和栈的区别主要在于 彻底理解Java中堆和栈的区别 java中堆和栈的区别 网络规划师可以挂靠吗?一般挂靠是多少一年? 1.请问网络规划设计师和信息系统项目管理师都能挂靠么? 2.挂靠的收入各是多少? 软考的中级职称哪个更好考一点? 软考能不能直接考高级? 系统规划与管理师准备哪几篇论文,该怎么写 java面试 内存中堆和栈的区别 求java中的 堆和栈 的图解(java初学者) java中堆与栈的区别 java中堆和栈有什么区别 JAVA中堆和栈的概念 java 中堆和栈的机制是什么? java中什么是堆和栈,如何应用,最好举个例子,并详细地说明一下,谢谢了 java中堆和栈的意思 java中内存堆和栈到底是什么? java,中的堆和栈? java,堆和栈是怎么分工的?就是说分别用来存放什么 java 堆和栈 分别存什么东西 java是从什么语言改进 java语言是从什么语言改进的 java是从什么语言改进重新设计的 java是从什么语言改进重新设计 java是什么语言改进的 Java是从什么语言改进重新设计的? java是用什么语言写的 java语言是由什么改造而来的?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com