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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 三土 中级黑马   /  2015-7-21 22:35  /  721 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一直对这个不是很理解,望解惑

13 个回复

倒序浏览
栈中存放的是方法中或方法声明上的局部变量,而堆内存中存放的是同过new出来的变量
回复 使用道具 举报
全局变量呢?
回复 使用道具 举报

静态全局变量,不在栈中也不在堆中,而在另外一个区 暂且叫做 方法区
回复 使用道具 举报
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。
堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。
优缺点:堆得优点就是可以动态分配内存大小,生存期也不必告诉编译器,因为它是在运行中动态分配内存的;缺点就是由于是在运行时动态分配内存的,所以读取速度较慢。
栈的优点就是读取速度快,而且数据可以共享;缺点就是存在于栈中的数据大小及周期必须是确定的,缺乏灵活性。
回复 使用道具 举报
Person s = new Person();
s地址存放在栈内存里面,new出来的对象储存在堆内存里面
回复 使用道具 举报
楼上的楼上,总结的真全面
回复 使用道具 举报
堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:
堆中某个节点的值总是不大于或不小于其父节点的值;
堆总是一棵完全树。
将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。
栈(stack)又名堆栈,它是一种先进后出(FILO)的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素
回复 使用道具 举报
学习学习
回复 使用道具 举报
栈中存放的是局部变量,堆中存放的是实例变量
回复 使用道具 举报
堆:动态分配内存,生命周期不用告诉编译器,由回收站回收,存取速度慢
栈:由系统分配内存大小,生命周期和存储的数据大小必须是确定的,缺乏灵活性,存取速度快,栈的数据是共享的
不用管我我就是挑战下看看能不能写下来,刚看完这个题      
回复 使用道具 举报
我也不懂,学习了
回复 使用道具 举报
这个你最好还是看下毕老师的视频,有详细的内存示意图
回复 使用道具 举报
游呤人 发表于 2015-7-22 00:10
栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量 ...

受教了                                                      
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马