繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM