黑马程序员技术交流社区
标题:
各位大侠,帮忙解决下,是否存在垃圾
[打印本页]
作者:
李凤鸣
时间:
2012-10-31 17:21
标题:
各位大侠,帮忙解决下,是否存在垃圾
eg1:
int[] x=new int[3];
int[] y=x;
y[1]=99;
System.out.print(x[1]);
x=null;
eg2:
int[] x=new int[3];
int[] y=new int[3];
y[1]=99;
System.out.print(x[1]);
x=null;
eg1不存在垃圾我明白
eg2为什么是存在垃圾
y[1]=99不算是对数组进行操作么
所以存在垃圾?
作者:
王永荣
时间:
2012-10-31 17:38
垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,垃圾收集的目的在于清除不再使用的对象。
GC通过确定对象是否被活动对象引用来确定是否收集该对象,y数组被创建后并初始化后,并没有再被其他对象所引用,故而被看做是垃圾,会被回收。
作者:
林剑
时间:
2012-10-31 22:07
eg1:
int[] x=new int[3];
int[] y=x;//x,y指向堆内存同一个内存块
y[1]=99;
System.out.print(x[1]);
x=null;//x为空时x就不再指向堆内存的内存块了,但是y还是指向那个内存块,所以没有垃圾
eg2:
int[] x=new int[3];
int[] y=new int[3];//x、y分别指向堆内存中2个不同的内存块
y[1]=99;
System.out.print(x[1]);
x=null;//当x为空时,x原先指向的内存块就成垃圾了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2