![](/img/trans.png)
[英]possible alternative to static inner classes to prevent memory leaks in android/java?
[英]Java memory leaks with classes
我想知道下面的代码是否是内存泄漏,因为Google仅出现了奇怪的示例。 基本上,如果我有一个类Tree
:
public class Tree{
private Bird[] birds;
public Tree(){
birds = new Bird[100];
}
}
我持有对Tree
的类引用,如下所示:
Tree myTree = new Tree();
然后不久之后,我将该引用设置为null
:
myTree = null;
垃圾收集器会否处理所有100个分配的Birds与tree类? 还是我需要一个delete()
方法? 我知道Java没有析构函数,但是这个多层类示例仍然使我感到困惑:
在Tree.java
:
public void deleteBirds{
birds = null;
}
垃圾收集器会否处理所有100个分配的Birds与tree类?
好吧,您的代码实际上并没有创建Bird
任何实例。 它只是创建一个数组,并且该数组的每个元素都将以null
开头。
但是,基本的答案是“是”-如果您没有其他引用该数组,并且没有其他引用您可能在其他地方创建的任何Bird
对象,则垃圾收集器将负责处理它们。 您几乎可以肯定不应该编写任何类型的“删除”方法。
您可能不需要myTree = null;
语句...如果它是超出范围的局部变量,或者对象中的实例变量无论如何都将有资格进行垃圾回收,那么这毫无意义。
相对较新的Java程序员可能需要一段时间才能学会信任垃圾收集器并放开控制...但是一旦这样做,您的代码就会简单得多:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.