黑马程序员技术交流社区

标题: 堆内存和栈内存 [打印本页]

作者: taoaisheng    时间: 2015-8-20 12:30
标题: 堆内存和栈内存
我一直再看咱们黑马的毕老师的视频,感到自己的进步很大,每天都在进步,都在成长,但是现在关于什么是堆内存,什么是栈内存,以及两者之间的区别到底什么还是处于模棱两可的状态,求解决。
作者: boboyuwu    时间: 2015-8-20 13:15
我感觉吧 关于堆内存和栈内存是要知道是什么用途就好了  ,  关于堆内存和栈内存是为JAVA分配的2中内存空间,
简单来说我划分一块内存空间  指引它就是堆内存       再划分一块内存空间指定它为栈内存   ,   每次创建对象初始化类中的成员变量和成员方法时候,将它们都放入堆内存中  .       而 栈内存中存放变量 ,引用变量,参数等等,方正你定义的变量都存放在栈内存中.  
作者: mmppp    时间: 2015-8-20 16:07
栈内存里面存放的是局部的变量,也就是方法里面的变量.还有执行中的方法,方法的执行是在栈内存里面进行的,虚拟机会将方法从方法区调到了栈里面来执行.
而堆内存里面存放的是new 出来的东西,也就是对象.以及对象的成员变量.(成员变量也就是定义在类里面方法之外的变量.)
栈和堆的关系也就是栈里面存储的是堆内存里面的内容的引用.也就是地址值,可以找到堆内存里面与之对应的那个对象.
作者: TheBadboy    时间: 2015-8-20 16:16
还有
堆:顺序随意
栈:先进后出
作者: 史柯    时间: 2015-8-20 16:38
这么说吧,这样比较简单。
作者: 史柯    时间: 2015-8-20 16:40
Java中内存的分配。栈: 存储局部变量!堆: 存储所有new出来的!方法区:方法,构造方法,常量!本地方法区:系统相关!寄存器:CPU使用!
作者: Woo    时间: 2015-8-20 17:05
栈内存(stack):一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,主要是用来执行程序的.
堆内存(heap):用于存放由new创建的对象和数组,主要用来存放对象的
与C++不同,Java在栈和堆方面自动分配,不需要程序员写代码来控制
作者: 寒星在天    时间: 2015-8-20 21:20
堆内存中的数据用完就消失了,栈内存中的数据就会等垃圾回收机制回收
作者: 阮文江    时间: 2015-8-20 21:25
我也很模糊,学习下
作者: 蓬头小道士    时间: 2015-8-20 21:30
栈内存:存放变量
堆内存:存放变量指向的内容(对象)
作者: 何时指点江山    时间: 2015-8-20 21:40
文字的解释可能不太清楚,多看看他画的图来理解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2