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

© 秦超 中级黑马   /  2012-3-6 21:21  /  1600 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看了毕老师的视频,了解了一下堆栈,可不可以理解为基本数据类型是保存在栈中,而引用数据类型保存在堆中呢?
除了堆和栈,还有3个存储位置,可不可以稍微解释一下呢?各位一起奋斗的少年来看看!

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 程洪 于 2012-3-6 22:16 编辑

基本数据类型是存储在《方法区》或者说《静态区》中,并不是存在栈中
你可以理解为堆就是内存的一片存储空间,只有在new一个对象的时候才会在内存中开辟空间供对象使用,如果对象消失那么这片空间也会消失!
栈内存中只存储了对象的引用,然后该引用指向堆内存中new出的对象的地址值。

评分

参与人数 2技术分 +2 黑马币 +2 收起 理由
老罗 + 2 赞一个!
秦超 + 2 赞一个!

查看全部评分

回复 使用道具 举报
new 出来的对象都在堆内存中,局部变量存放在栈内存中,代码存放在代码区,数据区存放静态变量和字符串常量

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
我个人见解为: 栈内存是存临时的变量名这些,而堆内存则是存对象。。很肤浅的额

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
我现在知道的内存会分为三个区:静态区、堆内存区、栈内存区。
静态区:又叫方法区,里面存放了类中的静态成员和方法。为特定类的对象共享数据。
堆内存区:存放对象。一般包括:对象实例的特有属性和方法。当对象不在被引用时,垃圾回收机制会将其回收。
栈内存区:可以存储对象的引用也可以调用对象的方法。在执行完后就会出栈。
回复 使用道具 举报
视频里面的那几个例子很不错,不懂了认真看几遍,就会有一个透彻的理解。
回复 使用道具 举报
袁野 黑马帝 2012-3-7 12:25:41
7#
多看视频 把 毕老师讲的很详细
回复 使用道具 举报
Java内存分配与管理是Java的核心技术之一,一般Java在内存分配时会涉及到以下区域:

◆寄存器:我们在程序中无法控制

◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中

◆堆:存放用new产生的数据

◆静态域:存放在对象中用static定义的静态成员

◆常量池:存放常量

◆非RAM存储:硬盘等永久存储空间
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马