【发布时间】:2013-08-05 17:46:06
【问题描述】:
我对以下情况有点困惑。
如果有这样创建的数组:
声明:
int[] array1;
实例化:
array1 = new int[500];
但后来,我不再需要 500 个元素,所以我只需创建一个具有新大小的新数组,如下所示:
array1 = new int[50]
访问该数组的代码周围有各种引用,如下所示:
for (x=0;x<array1.length;x++){
array1[x]+someValue
}
其他 450 个元素所在的内存会发生什么变化?数组本身仍然“活着”,不是因为我仍然有很多对其名称的引用,所以它不能被 GC 处理,所以我有点困惑 GC 在这种情况下是如何工作的。
注意我知道我应该使用 arrayList 来重新调整大小,不幸的是,现在这不是我的选择,因为更改我的代码需要大量工作(大小为 18 个班级)所以我想至少在这个项目中坚持使用数组并尽可能地管理它们。
【问题讨论】:
-
“CG”是指“GC”(垃圾收集器)吗?如果不是,我很困惑 - 但如果是这样,您应该编辑问题...
-
哎呀——是的,当然是 GC——不知道我是怎么输错 3 次的!现在更正了:-)
-
@Zippy 如果你仍然有一个对象的可达引用,它不能被 GC'ed。
-
@ObieMD5 这与那完全不同。实际问题非常不同。
标签: java android memory-management garbage-collection