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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiewen 中级黑马   /  2013-4-23 22:45  /  1155 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xiewen 于 2013-4-24 15:23 编辑

对象在内存中的状态?

评分

参与人数 1技术分 +1 收起 理由
王怀亮 + 1 希望以后问的问题详细一点

查看全部评分

8 个回复

倒序浏览
感觉你问的有点笼统,希望能帮到你

无标题.png (12.95 KB, 下载次数: 34)

无标题.png

评分

参与人数 1技术分 +1 收起 理由
王怀亮 + 1

查看全部评分

回复 使用道具 举报
wangyougu010 发表于 2013-4-23 23:04
感觉你问的有点笼统,希望能帮到你

我还是不明白?
回复 使用道具 举报
你可以理解为Java的引用类型变量时存在java中一个叫栈的空间, 你调用方法时方法就进入栈中, 当方法调用完毕后, 方法随之就消失了, 就不在栈中了, 对象是存在内存中的一个叫堆的区域, 堆中的对象返回了一个地址, 栈中保存的是引用, 就是变量, 变量指向了这个地址, 它们两个就链接上了, 当方法消失后, 变量随之消失, 但是对象还在, 这时候他的地址没有指向任何变量, 就是空引用, 当垃圾回收器空闲时会将空引用的对象回收处理

评分

参与人数 1技术分 +1 收起 理由
王怀亮 + 1

查看全部评分

回复 使用道具 举报
Java中内存区有五片:栈内存,对内存,方法区(也叫共享区),寄存器,本地方法区;
我们只要了解前面三个就可以了;看代码:
Student stu=null;//这个stu是一个引用,stu是放在栈内存中的;
stu=new Student();//这个new Student()一个对象,也叫一个实体,里面有一些数据,比如名字等 ,是放入堆内存中的;也就是说new出来的东西是在堆内存中;
那么stu=new Student();这句我们称之为,stu这个存在于栈内存中的引用指向了堆内存中的那个学生实体对象;
而方法区是存储静态成员的,是一些共享数据的内存区域,因此也叫共享区;

希望能帮到你。。。。

评分

参与人数 1技术分 +1 收起 理由
王怀亮 + 1

查看全部评分

回复 使用道具 举报
记住 只要是new出来的都在堆区,比如说int[]arr= new int[]{3,4,5,6}; 3 4 5 6就在堆内存中,arr在栈内存中,arr的引用指向 newint[]它的内存地址值也叫哈希值

评分

参与人数 1技术分 +1 收起 理由
王怀亮 + 1

查看全部评分

回复 使用道具 举报
xiewen 中级黑马 2013-4-24 15:24:57
7#
breeze 发表于 2013-4-23 23:12
你可以理解为Java的引用类型变量时存在java中一个叫栈的空间, 你调用方法时方法就进入栈中, 当方法调用完毕 ...

非常谢谢!
回复 使用道具 举报
xiewen 中级黑马 2013-4-24 15:25:32
8#
尹丽峰 发表于 2013-4-24 13:38
记住 只要是new出来的都在堆区,比如说int[]arr= new int[]{3,4,5,6}; 3 4 5 6就在堆内存中,arr在栈内存中 ...

非常谢谢!
回复 使用道具 举报
xiewen 中级黑马 2013-4-24 15:25:51
9#
Miss小强 发表于 2013-4-24 13:20
Java中内存区有五片:栈内存,对内存,方法区(也叫共享区),寄存器,本地方法区;
我们只要了解前面三个 ...

非常谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马