黑马程序员技术交流社区

标题: 我只知道栈。。。栈内存与堆内存是啥? [打印本页]

作者: zgjswp    时间: 2015-3-10 01:26
标题: 我只知道栈。。。栈内存与堆内存是啥?
在数据结构中学过栈,还知道一个叫做堆排序的。。为啥在java中新建对象就会用栈内存和堆内存画示意图?到底这两个是啥关系?难道就是为了便于理解抽象出来的概念?


作者: 123412    时间: 2015-3-10 07:07
没啥,就是内存中两个不同的存储位置呗,不要想得太复杂
作者: 白春秋    时间: 2015-3-10 08:17
简单地说:栈内存就是存储主函数main的成员的(成员变量只是储存实例化对象的索引地址值),而堆内存主要是存储类的栈内存索引所对应的实例化对象
作者: gaopeng868988    时间: 2015-3-10 09:17
栈内存(stack)上分配的内存系统自动释放,堆内存(heap)上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里。stack一般是静态分配内存,heap上一般是动态分配内存。
着的理解起来简单一点吧
作者: 黑马小夏    时间: 2015-3-10 09:22
同求大神清晰透彻的分析
作者: 2119391569    时间: 2015-3-10 10:09
java程序运行时,需要在内存中分配空间,为了提高运算效率,又对内存进行了不同区域的划分,因为每一片区域都有特定的数据处理方式和内存管理方式。
栈内存:用于存储局部变量,数据使用完,所占空间自动释放。
堆内存:数组和对象,通过new建立的实例都存放在堆内存中;
            每一个实体都有内存地址值;
            实体中的变量都有默认初始化值;
            实体不在被使用,会在不确定时间被垃圾回收机制回收。
在Java中建立对象,要给对象起名字,对象的名字作为局部变量被栈内存接收,通过new在堆内存中建立一个实体,就是对象,把对象的内存地址值赋给对象名。不知道有没有帮到你,我只知道这些,呵呵!一起加油!
作者: 念念不忘    时间: 2015-3-10 14:55
 Java把内存划分成两种:一种是栈内存,一种是堆内存。

  在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。

  当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。

  堆内存用来存放由new创建的对象和数组。

  在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配

作者: 艺多不压身丶    时间: 2015-3-10 15:04
内存地址:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
栈:存储的都是局部变量 ( 函数中定义的变量,函数上的参数,语句中的变量 );
        只要数据所在的区域结束,该数据就会被释放。
堆:用于存储数组和对象成员变量,也就是实体。就是用于封装多个数据的。
        1:每一个实体都有内存首地址值。
        2:堆内存中的变量都有默认初始化值。因为数据类型不同,值也不一样。
        3:垃圾回收机制。
作者: 复仇的撒旦    时间: 2015-3-10 15:33
艺多不压身丶 发表于 2015-3-10 15:04
内存地址:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
栈:存储的都是局部变量 ( 函数中定义的 ...

版主讲的好透彻
作者: 一般现在时    时间: 2015-3-10 22:39
学习了!
作者: 默桑    时间: 2015-3-10 22:44
栈内存是一个指向堆内存的地址,
堆内存是存储数据类型的~
作者: miosec    时间: 2015-3-10 23:02
建议看看刘意老师的视频,讲的非常不错,其中就有堆栈内存分析.
作者: hyc120500    时间: 2015-3-10 23:25
我发现我好像也分不清楚
作者: 赵涛涛    时间: 2015-3-10 23:45
艺多不压身丶 发表于 2015-3-10 15:04
内存地址:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
栈:存储的都是局部变量 ( 函数中定义的 ...

版主回答的好详细,今天刚复习到这里
作者: zgjswp    时间: 2015-3-11 00:07
艺多不压身丶 发表于 2015-3-10 15:04
内存地址:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。
栈:存储的都是局部变量 ( 函数中定义的 ...

自己也找了资料看看再结合版主的讲解有些明白了,谢谢版主啊
作者: 木森森    时间: 2015-3-11 11:35
new 出来的都放到推内存中




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