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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Geek_001 中级黑马   /  2014-6-18 17:10  /  1091 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Geek_001 于 2014-6-20 23:59 编辑

int[] x = new int[3];
x=null;               
为何此时堆内存中还有垃圾?

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

12 个回复

倒序浏览
Java的垃圾回收机制是对象或实体在堆内存中变成垃圾(及不被引用),java虚拟机会自动启动垃圾回收机制、把不用的对象或实体清除掉。但不一定马上执行。会在不定时的时间内清除它。毕老师视频讲的

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
同意楼上说法
回复 使用道具 举报
讲的这么详细,都不给技术分呢:(

点评

审核加分是需要时间的,耐心点哦。  发表于 2014-6-19 23:58
回复 使用道具 举报
墓____夜 来自手机 中级黑马 2014-6-18 19:44:21
报纸
因为你之前堆内存,放弃了,又从新开辟了一块堆内存,只不过没有存东西。  所以之前的内存就成垃圾了
回复 使用道具 举报
@伍叶竹   @李小然  @SyouRai_Tsk  版主呢,给我技术分啊,回答的这么详细,不要打击我回答问题的热情啊
回复 使用道具 举报
luojunwei1992 发表于 2014-6-18 21:38
@伍叶竹   @李小然  @SyouRai_Tsk  版主呢,给我技术分啊,回答的这么详细,不要打击我回答问题的热情啊 ...

第一:你按照老师说的回答的是很仔细,你知道我的问题是什么吗?我的问题是被new新建立的实例对象数组x    在堆内存中开辟了空间,且初始化值均为0,但之后把null赋值给数组x后,不相当于把数组x清空了吗?为何堆内存中还有垃圾?
回复 使用道具 举报
luojunwei1992 来自手机 中级黑马 2014-6-19 09:15:18
8#
Geek_001 发表于 2014-6-19 02:21
第一:你按照老师说的回答的是很仔细,你知道我的问题是什么吗?我的问题是被new新建立的实例对象数组x   ...

我上面回答了,因为java的垃圾回收机制很特别,它不会立刻清理不用的垃圾啊,过一段时间你在看就会发现垃圾已经被释放了
回复 使用道具 举报
luojunwei1992 来自手机 中级黑马 2014-6-19 09:20:59
9#
x=null,意思是引用变量x不在指向堆中数组的首地址了,引用变量初始化值是null
回复 使用道具 举报
luojunwei1992 发表于 2014-6-19 09:20
x=null,意思是引用变量x不在指向堆中数组的首地址了,引用变量初始化值是null ...

数组x若写成:int[] arr = new int[],其初始化值为null,但若写成int[] arr = new int[3],其初始化值为0,前面半句的回答我同意。
回复 使用道具 举报
luojunwei1992 来自手机 中级黑马 2014-6-19 19:33:41
11#
第一个格式不对吧,缺少数组维,第二个是堆中的元素初始化值为0,arr等于堆中数组的首地址
回复 使用道具 举报
alive 来自手机 中级黑马 2014-6-20 02:20:44
12#
x=null之后,x不在指向数组对象,但是数组对象还在堆内存中,不会立即释放
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马