在java中清空数组的最佳方法

时间:2013-09-13 13:15:05

标签: java

我已经拥有了MyClass

MyClass[] data;

设定长度:

data = new MyClass[1];

添加数据:

data[0] = new MyClass();

现在我需要清除数组。做这个的最好方式是什么?可以为该数组赋值null吗?

data=null;

5 个答案:

答案 0 :(得分:6)

您是否希望阵列仍然存在但却没有任何内容?重新初始化数组:

data = new MyClass[1];

您是否希望数组不再存在,以便在JVM感觉到时可以收集垃圾?然后如你所说data=null;

如果您对同一个数组有多个引用,并且想要删除所有元素:

Arrays.fill(data, null);

答案 1 :(得分:4)

我不知道你的期望。一般来说,java有自动垃圾收集。

Arrays.fill(myArray, null);

答案 2 :(得分:1)

基本上你不需要Java,你有自动垃圾 采集。

有时,如果您使用存储静态数据的Factories,则需要将其设置为null以防止将来再次使用

但如果你想寻找其他方法,你可以尝试:

List<MyClass> data = new ArrayList<MyClass>(1);
data.add(new MyClass());
data.clear();

答案 3 :(得分:0)

是的,你可以使用= null来处理事情。

一旦没有指向数据的变量,那么垃圾收集器就会收集它,一切都会很好并且花花公子:)

答案 4 :(得分:0)

这完全取决于垃圾收集器如何处理它。你可以做两件事,行为和语义略有不同:

data[0] = null;

意味着数据仍将继续引用包含一个大小的MyClass引用列表的内存区域,仅在这种情况下,对MyClass的引用为null。垃圾收集器将收集先前分配的MyClass实例。

data = null;
然而,

将完全删除所提到的内存区域,垃圾收集器将收集引用列表和MyClass实例。因此,从内存的角度来看,如果你真的不打算使用相同的引用数组,第二个选项将提供最大的好处。