我已经拥有了MyClass
MyClass[] data;
设定长度:
data = new MyClass[1];
添加数据:
data[0] = new MyClass();
现在我需要清除数组。做这个的最好方式是什么?可以为该数组赋值null吗?
data=null;
答案 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实例。因此,从内存的角度来看,如果你真的不打算使用相同的引用数组,第二个选项将提供最大的好处。