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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 芦青 中级黑马   /  2013-3-28 16:01  /  2321 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 芦青 于 2013-3-28 17:13 编辑

今天重头开始复习的时候,遇到了一个没转过弯的问题,请大家帮忙开导开导:
比如我在主函数中定义了一个数组:int[] arr=new int[3]
它在内存中的形式是这样的:
首先在栈内存中开辟了一片主函数的空间,在空间里定义了一个x的变量,然后在堆内存中叶开辟了一个空间,里面储存了3个int类型的元素,并把地址值赋给了变量x,使x变量指向了堆内存,这些我明白..我不明白的是:
x一直指向堆内存,堆里的实体就不会被垃圾回收机制回收掉,在没有任何操作的情况下:是不是当主函数运行完以后,主函数里的x变量就消失掉了,堆内存就不会有了指向在被使用了,会被垃圾回收机制回收掉..这样一来,是不是可以认为:当主函数结束完后,内存中不会再有任何数据了..?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
对,可以这么认为,堆内存中的对象空间必须是要有一个引用变量指向的,否则就是垃圾,内存其实也就是在程序运行的时候使用,运行完后内存会释放。

还有就是我也一直对这方面的问题很感兴趣,建议你看一本 深入JAVA虚拟机,我感觉看看这本书会对我们理解程序有很大的帮助。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
芦子骐 发表于 2013-3-28 16:49
对,可以这么认为,堆内存中的对象空间必须是要有一个引用变量指向的,否则就是垃圾,内存其实也就是在程序 ...

谢谢,5百年前我们是一家啊:lol
回复 使用道具 举报
芦青 发表于 2013-3-28 16:51
谢谢,5百年前我们是一家啊

哈哈哈!!!就是!!!~~19期见!!!!:lol,,还有  你的头像很帅!!~
回复 使用道具 举报
芦子骐 发表于 2013-3-28 16:54
哈哈哈!!!就是!!!~~19期见!!!!,,还有  你的头像很帅!!~

哈,谢谢,争取19期见,祝好运..:handshake
回复 使用道具 举报
芦子骐 发表于 2013-3-28 16:54
哈哈哈!!!就是!!!~~19期见!!!!,,还有  你的头像很帅!!~

你的头像也很帅啊。很像九门提督啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马