我有一个 MyClass
MyClass[] data;
设定长度:
data = new MyClass[1];
添加数据:
data[0] = new MyClass();
现在我需要清除数组。做这个的最好方式是什么?可以将 null 分配给该数组吗?
data=null;
我有一个 MyClass
MyClass[] data;
设定长度:
data = new MyClass[1];
添加数据:
data[0] = new MyClass();
现在我需要清除数组。做这个的最好方式是什么?可以将 null 分配给该数组吗?
data=null;
您是否希望数组仍然存在但其中没有任何内容?重新初始化数组:
data = new MyClass[1];
是不是想让数组不存在了,让JVM觉得喜欢的时候就可以收集垃圾了?然后data=null;
如你所说。
如果您对同一个数组有多个引用并且想要删除所有元素:
Arrays.fill(data, null);
我不知道你在期待什么。一般来说,java 有自动垃圾收集。
Arrays.fill(myArray, null);
基本上你在 Java 中不需要它,你有自动垃圾收集。
有时,如果您使用Factories
该存储静态数据,当然,您需要将其设置为null
以防止将来额外使用
但是,如果您正在寻找其他方法,您可以尝试:
List<MyClass> data = new ArrayList<MyClass>(1);
data.add(new MyClass());
data.clear();
是的,您可以使用= null
它,它会处理好事情。
一旦没有变量指向数据,垃圾收集器就会收集它,一切都会好起来的 :)
这取决于垃圾收集器如何处理它。你可以做两件事,行为和语义略有不同:
data[0] = null;
意味着数据仍将继续引用包含对 MyClass 的一个大小的引用列表的内存区域,仅在这种情况下,对 MyClass 的引用为空。垃圾收集器将收集之前分配的 MyClass 实例。
data = null;
但是,将完全删除提到的内存区域,垃圾收集器将收集引用列表和 MyClass 实例。因此,从内存的角度来看,如果您真的不打算使用相同的引用数组,那么第二个选项将提供最大的好处。