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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鸭梨的生活 中级黑马   /  2014-5-19 13:16  /  1372 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

。。。。。。。。。。。。。

4 个回复

倒序浏览
栈内存:存储的都是局部变量,先进后出。一旦局部变量生命周期结束立刻被释放。
堆内存:存储的是实体(对象)。
1,堆内存中的每一个实体都有自己的内存地址值。
2,堆内存中每一个变量都有默认初始化值,不同类型初始化值不同。
int 0,double 0.0 char \u0000,boolean false.
3,当实体被视为垃圾时,会在不定时的时间内,被垃圾回收。
回复 使用道具 举报
stack 和 heep 都是内存的一部分
stack 空间小,速度比较快, 用来放对象的引用
heep 大,一般所有创建的对象都放在这里。

栈(stack):是一个先进后出的数据结构,通常用于保存方法(函数)中的参数,局部变量.
在java中,所有基本类型和引用类型都在栈中存储.栈中数据的生存空间一般在当前scopes内(就是由{...}括起来的区域).
堆(heap):是一个可动态申请的内存空间(其记录空闲内存空间的链表由操作系统维护),C中的malloc语句所产生的内存空间就在堆中.
在java中,所有使用new xxx()构造出来的对象都在堆中存储,当垃圾回收器检测到某对象未被引用,则自动销毁该对象.所以,理论上说java中对象的生存空间是没有限制的,只要有引用类型指向它,则它就可以在任意地方被使用.

        1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。
        2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。
回复 使用道具 举报
内存中分为5块区域
栈、堆、方法区,本地方法区,计时器
栈:储存局部变量与局部变量的值,随着方法的结束而消失。
堆:用new建的所有东西都在这里,成员变量也在这里,这里的东西随着实体的消失而消失,作用周期长。
回复 使用道具 举报
heap是以h开头的,statck是以s开头的。heap的长度为4,statck为5. 。。。。。。。。。。   一开始我还以为集合里面的栈列和队列有什么不同呢?问题提问的详细点
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马