分享好友 维修大全首页 维修大全分类 切换频道

吉日象维修app

堆和栈的区别

2023-11-14640

在java中,内存分为两种,一种是栈(PC、Stack、Native Stack)内存,另一种是堆(堆、方法区)内存。

栈内存

用来存放在方法中定义的一些基本数据类型的变量和引用类型的变量。当在一段代码块中定义一个变量时,JVM就在栈中为这个变量分配内存空间,当超过变量的作用域后,JVM会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。

堆内存

用来存放运行时创建的对象。可以在栈中定义一个特殊的变量,这个变量的取值等于对象在堆内存中的首地址,在栈中的这个特殊的变量就是堆中对象的引用变量,以后可以在程序中使用栈中的引用变量访问堆中的对象。对象在没有引用变量指向它的时候,才变成垃圾,不能被使用,但仍然占着内存,在随后一个不确定的时间被垃圾收集器回收掉。这个也是java比较占内存的主要原因。

区别

1.存放内容不同

栈内存:用来存放在方法中定义的一些基本数据类型的变量和引用类型的变量。

堆内存:用来存放运行时创建的对象。

2.生命周期不同

栈的生命周期与线程相同,随线程而生,随线程而亡,是线程私有的。

堆的生命周期与JVM相同,JVM启动时创建,JVM停止时销毁,是线程共享的。

3.内存回收管理不同

栈随线程而生,随线程而亡。每个方法被执行的时候都会创建一个栈帧,栈帧随着方法的进入和退出做入栈和出栈操作, 实现了自动内存清理。

堆是线程共享的内存区域,没有确定的销毁时间。因此,内存回收主要集中于堆中,在堆中分配的内存由垃圾收集器来管理回收。

4.存取速度不同

栈的存取速度较快,仅次于寄存器。但栈的数据大小与生存期必须是确定的,缺乏灵活性。

堆在运行时动态分配内存,生存期不用提前告诉编译器,这也导致了堆的存取速度较慢。

备注:

堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或者对象之后,还可以在栈中定义一个特殊的变量,让栈中的这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或者对象,引用变量就相当于是为数组或者对象起的一个名称。引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象本身在堆中分配,即使程序运行到使用 new 产生数组或者对象的语句所在的代码块之外,数组和对象本身占据的内存不会被释放,数组和对象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍然占据内存空间不放,在随后的一个不确定的时间被垃圾回收器收走(释放掉)。

这也是 Java 比较占内存的原因,实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针!

举报
打赏
打赏主播是什么意思
打赏主播是指观众(用户)在观看网络直播节目时,自愿通过直播平台提供的支付渠道,将一定数额的金钱或虚拟礼物赠送给主播的行为

0评论2025-03-26870

主打是什么意思
“主打” 这个词常见的有以下几种意思:一、在商业、产品领域主要营销、重点推广当我们说某产品是公司的 “主打产品” 时,是指

0评论2025-03-26636

电台路是什么意思
“电台路” 通常是因与电台相关的因素而得名的道路,以下是一些具体例子:上海电台路:位于宝山区顾村镇,呈南北走向,南起宝安

0评论2025-03-26335

打狙的窍门是什么意思
“打狙的窍门” 通常是指在射击游戏或实际射击场景中,使用狙击步枪时能够提高射击准确性、效率和生存能力等的一些技巧和方法。

0评论2025-03-26647

路上的创作原声是什么意思
“路上的创作原声” 通常是指以 “在路上” 的状态、经历、感悟等为主题或灵感来源而创作的原始声音作品,在不同艺术领域有不同

0评论2025-03-26375

打印照片回执是什么意思
打印照片回执是指在完成照片拍摄并经相关系统审核通过后,将记录照片合格信息以及个人身份等相关内容的电子凭证,通过打印机输出

0评论2025-03-26283

棒打鸳鸯是什么意思
“棒打鸳鸯” 是一个汉语成语,意思是用木棒打散一对鸳鸯,比喻拆散恩爱的夫妻或情侣。该成语的来源和用法如下:来源与出处:出

0评论2025-03-26672

主打三棺是什么意思
“主打三棺” 是一种网络用语,用反语的方式讽刺人们没有正常的思维观念和底线。该梗起源于贴吧网友之间的讽刺话语,具体出自抗

0评论2025-03-26220

常用香料是什么意思
常用香料是指在烹饪、食品加工、香水制作、药品生产等领域中经常使用的具有独特香气和味道的物质。它们可以增添风味、改善气味、

0评论2025-03-26963

潮汕话香芋是什么意思
在潮汕话中,“香芋” 通常指的就是芋头。不过,潮汕方言中芋头的发音是 “麦筲”(mài shāo)。芋头在潮汕地区的饮食文化和民

0评论2025-03-26504

关于我们  |  网站留言
(c)2026 吉日象维修app www.mykuaidi.com