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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hanxing 中级黑马   /  2014-11-7 22:48  /  2306 人查看  /  27 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hanxing 于 2014-11-10 21:14 编辑

这两个分别用来干什么的?有什么区别?傻傻分不清啊

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

27 个回复

倒序浏览
堆内存用于存放对象,对象不用时JVM会启用垃圾回收期将其回收;
栈内存用于存放被调用的方法,方法被调用时进栈,方法结束时出栈(专业术语叫弹栈)
回复 使用道具 举报
zxbzxb333 发表于 2014-11-8 06:41
堆内存用于存放对象,对象不用时JVM会启用垃圾回收期将其回收;
栈内存用于存放被调用的方法,方法被调用时 ...

十分感谢!!!
回复 使用道具 举报
扫地僧wu 来自手机 中级黑马 2014-11-8 16:03:36
板凳
楼主那么多的黑马币和技术分,会不懂这个么
回复 使用道具 举报
zxbzxb333 发表于 2014-11-8 06:41
堆内存用于存放对象,对象不用时JVM会启用垃圾回收期将其回收;
栈内存用于存放被调用的方法,方法被调用时 ...

变量是不是存在栈内存中?方法不是存在方法区中的吗?
回复 使用道具 举报
  一般变量存在方法中,当调用方法时,方法进栈,此时栈会开辟一部分空间给方法,同时方法中的一些变量比如方法的形式参数,会在该空间中存在;
  同时方法区又分:静态的方法区和类中的成员函数的方法区
回复 使用道具 举报
高昌德 发表于 2014-11-8 16:08
变量是不是存在栈内存中?方法不是存在方法区中的吗?

方法没有调用的时候都存在方法区,方法在调用的时候才进栈中运行,方法区又分为静态方法区,非静态方法区,和底层方法区;
至于变量存在哪里毕老师的视频中这块貌似也没有详细讲过,我的理解是,成员变量(方法也是成员变量)也存在于方法区中,当new对象时就复制一份跟随new的对象存入堆内存中,复制的那份随着对象的消亡而消亡;非静态局部变量是属于方法的,跟着方法走。
回复 使用道具 举报
扫地僧wu 发表于 2014-11-8 16:03
楼主那么多的黑马币和技术分,会不懂这个么

你竟然怀疑我,:L,我是真不懂啊,前面的视频都没看呢,看见坛友们天天说内存,也很纠结的
回复 使用道具 举报
zxbzxb333 发表于 2014-11-8 17:13
方法没有调用的时候都存在方法区,方法在调用的时候才进栈中运行,方法区又分为静态方法区,非静态方法区 ...

又晕了....
回复 使用道具 举报
void 中级黑马 2014-11-8 19:05:55
10#
1.栈

栈中存放基本类型的变量和对象的引用,他们的内存大小和生命周期是确定的,会在变量退出作用域时有编译器释放所占内存。

2.堆

堆内存用来存放new()出来的对象,对象的引用则依然存放在栈中。堆中的内存由Java虚拟机的自动垃圾回收器来管理。当栈内存中不存在堆中的对象的引用时此对象成为垃圾,会在某一时刻被垃圾回收器回收。
http://my.oschina.net/u/2263603/blog/342152
回复 使用道具 举报
同求解。
回复 使用道具 举报
堆用于存放对象,在对象生命周期到了时,JVM会自动清除;
回复 使用道具 举报
栈用来存放正在执行的方法、临时变量等,当方法执行完后,会将这个方法的所有东西都删掉;总之堆用于存放一堆临时数据,而栈用于存储少量的临时数据
回复 使用道具 举报
我擦。都没看视频这些技术分都是哪里来的....
回复 使用道具 举报
堆内存用于存放对象,对象不用时JVM会启用垃圾回收期将其回收; 栈内存用于存放被调用的方法,方法被调用时进栈,方法结束时出栈(专业术语叫弹栈)
回复 使用道具 举报
他们都是内存的分区,有着不同的数据处理方式和内存管理方式。
栈内存用于存储局部变量,当数据使用完成后,总动清理掉数据并释放内存
堆内存一般用来存储数组和对象,通过new关键字来为数组和对象在堆内存中分配空间,当数据不被使用时候,会被视为垃圾,会不定时被垃圾回收器回收,而且在堆内存中存储的数据会被自动进行初始化。
回复 使用道具 举报
桃华月禅 发表于 2014-11-8 20:54
我擦。都没看视频这些技术分都是哪里来的....

信不信由你,上班期间看了其他机构的一整套视频(这里我不敢打广告,但那视频也蛮好的),从javase,jdbc,dom到jQuery了,还有oracle,其中dom和jQuery现在有点生疏了.现在辞职了,因为想报黑马,就回过头走流程,但我不可能从java基础一节一节的看吧?所以我按老师说的看java加强部分,前面部分随机看了几个视频,也就是io高新,反射,其实我这些都是看过的,只是不同的老师的视频可能部分知识点的提法不同,有些侧重点也不同,也有像毕老师的gui我以前是完全没有看过的.
关于技术分其实我也没有多少,版主给了些,做王老师的题目5分,其它的就是用黑马币换的
回复 使用道具 举报
void 发表于 2014-11-8 19:05
1.栈

栈中存放基本类型的变量和对象的引用,他们的内存大小和生命周期是确定的,会在变量退出作用域时有编 ...

你博客中的内存溢出是在哪里看的视频?
回复 使用道具 举报
好吧,来学习一下。。。。
回复 使用道具 举报
void 中级黑马 2014-11-8 22:28:43
20#
hanxing 发表于 2014-11-8 22:16
你博客中的内存溢出是在哪里看的视频?

Think in java
java虚拟机
这两本书里面的

点评

最近这两本书在论坛很火,以后再买吧,视频都没看完呢!!  发表于 2014-11-8 22:36
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马