黑马程序员技术交流社区

标题: 关于内存 [打印本页]

作者: 秦超    时间: 2012-3-6 21:21
标题: 关于内存
看了毕老师的视频,了解了一下堆栈,可不可以理解为基本数据类型是保存在栈中,而引用数据类型保存在堆中呢?
除了堆和栈,还有3个存储位置,可不可以稍微解释一下呢?各位一起奋斗的少年来看看!
作者: 程洪    时间: 2012-3-6 21:23
本帖最后由 程洪 于 2012-3-6 22:16 编辑

基本数据类型是存储在《方法区》或者说《静态区》中,并不是存在栈中
你可以理解为堆就是内存的一片存储空间,只有在new一个对象的时候才会在内存中开辟空间供对象使用,如果对象消失那么这片空间也会消失!
栈内存中只存储了对象的引用,然后该引用指向堆内存中new出的对象的地址值。
作者: 王思兰    时间: 2012-3-6 21:30
new 出来的对象都在堆内存中,局部变量存放在栈内存中,代码存放在代码区,数据区存放静态变量和字符串常量
作者: 泮和顺    时间: 2012-3-6 21:33
我个人见解为: 栈内存是存临时的变量名这些,而堆内存则是存对象。。很肤浅的额
作者: 王杰    时间: 2012-3-6 22:59
我现在知道的内存会分为三个区:静态区、堆内存区、栈内存区。
静态区:又叫方法区,里面存放了类中的静态成员和方法。为特定类的对象共享数据。
堆内存区:存放对象。一般包括:对象实例的特有属性和方法。当对象不在被引用时,垃圾回收机制会将其回收。
栈内存区:可以存储对象的引用也可以调用对象的方法。在执行完后就会出栈。
作者: anyanyhai    时间: 2012-3-7 11:44
视频里面的那几个例子很不错,不懂了认真看几遍,就会有一个透彻的理解。
作者: 袁野    时间: 2012-3-7 12:25
多看视频 把 毕老师讲的很详细
作者: 赵晓波    时间: 2012-3-7 14:11
Java内存分配与管理是Java的核心技术之一,一般Java在内存分配时会涉及到以下区域:

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

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

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

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

◆常量池:存放常量

◆非RAM存储:硬盘等永久存储空间




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