A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© taoaisheng 中级黑马   /  2015-8-20 12:30  /  467 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我一直再看咱们黑马的毕老师的视频,感到自己的进步很大,每天都在进步,都在成长,但是现在关于什么是堆内存,什么是栈内存,以及两者之间的区别到底什么还是处于模棱两可的状态,求解决。

10 个回复

倒序浏览
我感觉吧 关于堆内存和栈内存是要知道是什么用途就好了  ,  关于堆内存和栈内存是为JAVA分配的2中内存空间,
简单来说我划分一块内存空间  指引它就是堆内存       再划分一块内存空间指定它为栈内存   ,   每次创建对象初始化类中的成员变量和成员方法时候,将它们都放入堆内存中  .       而 栈内存中存放变量 ,引用变量,参数等等,方正你定义的变量都存放在栈内存中.  
回复 使用道具 举报
栈内存里面存放的是局部的变量,也就是方法里面的变量.还有执行中的方法,方法的执行是在栈内存里面进行的,虚拟机会将方法从方法区调到了栈里面来执行.
而堆内存里面存放的是new 出来的东西,也就是对象.以及对象的成员变量.(成员变量也就是定义在类里面方法之外的变量.)
栈和堆的关系也就是栈里面存储的是堆内存里面的内容的引用.也就是地址值,可以找到堆内存里面与之对应的那个对象.
回复 使用道具 举报
还有
堆:顺序随意
栈:先进后出
回复 使用道具 举报
这么说吧,这样比较简单。
回复 使用道具 举报
Java中内存的分配。栈: 存储局部变量!堆: 存储所有new出来的!方法区:方法,构造方法,常量!本地方法区:系统相关!寄存器:CPU使用!
回复 使用道具 举报
Woo 中级黑马 2015-8-20 17:05:02
7#
栈内存(stack):一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,主要是用来执行程序的.
堆内存(heap):用于存放由new创建的对象和数组,主要用来存放对象的
与C++不同,Java在栈和堆方面自动分配,不需要程序员写代码来控制
回复 使用道具 举报
堆内存中的数据用完就消失了,栈内存中的数据就会等垃圾回收机制回收
回复 使用道具 举报
我也很模糊,学习下
回复 使用道具 举报
栈内存:存放变量
堆内存:存放变量指向的内容(对象)
回复 使用道具 举报
文字的解释可能不太清楚,多看看他画的图来理解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马