java中堆内存 和栈内存 存放的是什么 通俗点回答 别用java词汇
java中堆内存 和栈内存 存放的是什么 通俗点回答 别用java词汇堆内存 和栈内存各自存放什么样的数据 简单通俗点回答 别用java的词汇 本来就不明白你在一嘴的 new 啊 什么的 更不明白啦
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象后,还可以在栈中定义一个特殊的变量,这个变量的取值等于数组或者对象在堆内存中的首地址,在栈中的这个特殊的变量就变成了数组或者对象的引用变量,以后就可以在程序中使用栈内存中的引用变量来访问堆中的数组或者对象,引用变量相当于为数组或者对象起的一个别名,或者代号。
引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。而数组&对象本身在堆中分配,即使程序运行到使用new产生数组和对象的语句所在地代码块之外,数组和对象本身占用的堆内存也不会被释放,数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。
这个也是java比较占内存的主要原因,实际上,栈中的变量指向堆内存中的变量,这就是 Java 中的指针!。
D:a.txt?里面写入了??“你好!hello?这几个字符”
堆:是具体数据;??“你好!hello?这几个字符“就是堆,也是具体的数据
栈:是地址;比如说是“D:a.txt"??就是栈,没有具体数据而是指向具体数据的一个地址。
栈:就相当于一个人的名字,而堆就是你叫这个人的名字的时候,这个人过来了。这个人就是“堆”而这个人的名字就是"栈"。
栈:内存中的区域,里面的数据有序存放,程序退出后该程序在里面所存放的数据 自动消失。
堆:内存中的区域,里面的数据无序存放,程序退出后该程序在里面存放的数据不会消失
堆栈存放的数据都是一样的,唯一的区别就是当程序退出时,栈中的数据会自动消失,而堆中的不会
不是!堆栈是独立的!
形象一点:就像是两个房子,一个叫堆,一个叫栈。这两个房子共同组成了一个叫“内存”的小区。
程序是搬运工,当搬运工把叫“数据”的物体放入“栈”这个房子时,物体是有序的,而且当搬运工离开时(程序退出),物体会自动消失。
而当搬运工把叫“数据”的物体放入“堆”这个房子时,物体是无序的,而且当搬运工离开时(程序退出),物体不会自动消失。
哈哈哈哈,说也说不明白
类中方法外头定义的东西放堆
new出来的东西 看到new了 new和他后面的东西就放栈
答:敏感词汇有***,**,*****,****,**,****,***...... 基本是以上这些,因为敏感词汇是发不出来的,所以用符号代替.详情>>
答:初三水平学编程很难吗?必须需要高数才行吗? 初三当然可以了,跟高数没有关系的。 放心吧!!详情>>
答:还要看个人因素。两个职业么,呵呵 我目前是程序员,感觉比网络工程师累,每天作者不动,体能日益下降,十指也饱受摧残,而且程序员一定要向设计员发展,而且一般也是这样...详情>>