问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请简单通俗易懂的解释一下在Java中什么叫堆 什么叫栈 谢谢

发布网友 发布时间:2022-03-30 22:05

我来回答

1个回答

热心网友 时间:2022-03-30 23:34

堆:也叫动态内存,相当于一个内存池子,在java中创建对象的时候,就从堆里面拿出一块来存放对象;当GC(垃圾回收)回收对象的时候,又把对象占用的内容还给堆。


举个例子:堆就好比一个面团,类就好比一个馒头印子,用印子从面团中取出一小块面团,印成馒头,这个馒头就是这个馒头印子类产生的对象了。当无限的创建馒头的时候,这个面团总会被用光的,这个时候就不能在创建新的馒头了。

所有GC就有存在的必要了,当对象不被持有的时候,GC就会把对象还给堆。也就是,当这个馒头没有被使用,这个馒头就变成小面团,还给面团。


栈:也是一段内存,但是这段内存比较有特点,遵循一个先进后出的规则。


举个例子:吃过罐装的薯片吧,薯片一片一片的放到罐里面去,想想,最先放进去的是不是放在罐的最底部。现在一片片把薯片取出来,是不是要从最顶部开始去,也就是最后放进去的,最先取出来。这个薯片放进去和取出来的这个过程,就是栈的工作原理啦(先进入的后出来,后进入的先出来)



在java中的栈:栈的原理明白了,其实只要是计算机只要是编程语言,什么堆什么栈都是一样的,基本作用也一样。java中可以认为,栈用来存放局部变量的。

public void fun(){

    int i=0; //i 是一个局部变量,存放在栈里面的

    Object obj = new Objec(); //obj 是一个对象应用,同样也是一个局部变量,存放在站里面的,但是obj指向的对象,在存在堆中

}

请简单通俗易懂的解释一下在Java中什么叫堆 什么叫栈 谢谢

堆:也叫动态内存,相当于一个内存池子,在java中创建对象的时候,就从堆里面拿出一块来存放对象;当GC(垃圾回收)回收对象的时候,又把对象占用的内容还给堆。举个例子:堆就好比一个面团,类就好比一个馒头印子,用印子从面团中取出一小块面团,印成馒头,这个馒头就是这个馒头印子类产生的对象了。...

java中什么是堆和栈,如何应用,最好举个例子,并详细地说明一下...

Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存...

请高手详细的解答一下JAVA的堆,栈,方法区,谢谢。

java堆:是虚拟机中所管理的内存中区域最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。java堆是垃圾收集器管理的主要区域。java虚拟机栈:线程私有的,它的生命周期与线程相同。每个方法被执行的时候都会同...

java语言中提及的“堆”主要有什么用?“栈又有什么用?”

Java把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。 堆内存用来...

堆栈、静态区、堆这三者有什么区别呢,在C语言或java中有区别吗

但是注意p1、p2本身是在栈中的。2.2 申请后系统的响应 栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲...

堆(heap)和栈(Stack)的区别是什么?为什么平时都把堆栈放在一起讲?

1、堆:是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。2、栈:又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。二、特点不同 1、堆:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。2、栈...

C语言堆和栈的区别用比喻,举例子说明?

堆和栈的区别可以引用一位前辈的比喻来看出:使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且...

什么是堆栈,请利用通俗易懂的语言解释

语句2: char str1[100];语句3: char* str2 = new char[100];语句1的两个变量都是存放在栈里 语句2的str1也是存放在栈里 语句3的str2存放在堆里 可以简单的说,不是用 new 申请空间的局部变量都是存放在栈里 ,注意是局部变量,全局变量不是!通俗的说下堆和栈:比如说一个慈善家建了一栋楼...

栈和堆分别用于存放什么样类型的变量?引用和对象又是分别放于哪个中?请...

栈内存用于存放局部变量,堆内存是在程序执行过程中动态的进行内存分配,对象都是放在堆内存中,因为它是在程序执行过程中动态创建的,而引用如果是作为局部变量是放在栈内存中的,如果它作为一个对象的成员变量则它是跟这个对象一起放在堆内存中的 ...

java堆栈问题~~~

堆栈会有一个量来标识栈顶,也就是标识出堆栈里最后放进去的数据在什么位置。堆栈可以进行的操作最基本的是两个:一个进栈(push)一个出栈(pop),也有叫压入弹出的。进栈的时候要判断栈是否已满,已满的堆栈不能进栈,弹夹满了,子弹肯定压不进去了。出栈的时候要判断栈是否为空,弹夹空了要卸...

通俗易解的解 通俗易懂的俗语 简单通俗的话 简单通俗的名字 简单通俗的表白 简单通俗的歇后语 女孩简单通俗的名字 简单通俗的对联 调流阀的工作原理简单通俗讲
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
新轩逸保养一次多少钱? ...每个小长方形的周长是多少厘米?(你能想出几 铅的正常是多少合适 两个同样的长方形,长是8分米,宽4分米。把它们拼成一个长方形,它的周长... ...拼成一个大长方形拼成的长方形的周长是多少分米 ...长8分米,宽是4分米,如果把它们拼成一个长方形,这个长方形的周长是... ...如果把它们拼成长方形,这个长方形的周长是多少? ...把它们拼成一个正方形,周长是___分米;把它们拼成一个长方... 把两个边长是4分米的正方形拼成一个长方形,这个长方形的周长是___ ...长是8分米,宽是4分米.如果把它们拼成一个长方形,这个长方形的周长是... 如何使在PS中抠图抠得干净·········· 用钢笔工具抠图抠不干净,怎么办? ps抠图为什么抠不干净? 要怎么处理PS抠图抠不干净的一些呢?如图: ps用魔棒工具抠图就是抠不干净怎么办 PS抠图,这个球网里的洞,抠图抠干净,怎么抠 PS抠图怎样才抠的干净啊? ps抠图小技巧 如何干净地删除底色 ps抠图边缘抠不干净怎么处理? ps怎么抠图边缘抠的干净 ps抠图怎么扣的干净 Photoshop 怎么才能抠图抠得更干净? 如何将word文件转换成PDF格式文件,要速度快的。 怎样快速将Word转成PDF格式 如何将word转换成pdf的格式 电脑快剪辑如何打开录屏 Excel软件的高级筛选为什么不能一次筛选出大于等于某数的数据?我有一些科目的成绩要筛出所有科目都大 excel中的高级筛选的条件(计算机大于85或英语大于85) 怎么写, microsoft excel 的高级筛选中我想筛选出英语分数大于60小于80的条件该怎么书写 如何使用表格excel中的高级筛选范围是大于等于10万亿与小于等于15万亿? 电脑如何自动录屏而不被知道 coolux酷乐视投影仪Q5怎么用 coolux酷乐视投影仪怎么样质量靠谱吗 酷乐视x3s投影仪怎样连接电脑,到底是用agv线连接还是用HDMI线连接 酷乐视COOLUX a3+高清LED微型投影机投影仪,不知道效果怎么样 酷乐视投影仪自动播放时,如何调整帧间隔时间? excel中如何高级筛选 电脑怎么录制外部声音啊??? 台式电脑录屏时怎么把外部声音录进去? 手机如何免费抠图 怎么做免抠图 怎么在线抠图? 有没有免费的自动抠图软件? 免费抠图软件哪个好 最好的免费批量抠图工具是哪个? 免费的抠图软件 请问有没有一款长期免费使用的中文版抠图工具? 有哪些免费的免抠图网站? 康佳k1投影仪怎样匹配小米红外遥控器 康佳投影仪K1怎么格式化