gpt4 book ai didi

java - 将对象指向空引用并重新分配内存或仅分配一次内存是否更有效?

转载 作者:行者123 更新时间:2023-12-01 13:22:06 25 4
gpt4 key购买 nike

如果变量指向内存中的空引用,那么Java垃圾收集将在运行时释放内存(这几乎是未知的。)

因此,当您在方法中使用完对象后,将对象指向空引用是否更有效,或者将一次分配作为类变量更好?

例如,这样做是否更好:

private TestFile TestFile = new TestFile();
public class Configuration{

//Methods accesing 'TestFile'
}
}

public class Configuration{

public void getFileName(){
TestFile TestFile = new TestFile();
TestFile.getName();
TestFile = null;
}

public void setFileName(String name){
TestFile TestFile = new TestFile();
TestFile.setName(name);
TestFile = null;
}
}
}

我不确定,对于第二个示例,您是否必须在每个方法中重新声明构造函数,但我的推理是,如果构造函数变量指向 null 并被删除,则 NullPointerException 的变化很大几乎总是会被抛出(同样,GC 非常复杂,并且几乎无法预测。)

最后,根据我的理解,我永远不想运行 GC 方法,因为它可能会扰乱 GC 设置的计划,并且运行该方法会比过早收集的资源花费更多的性能。 .

感谢您的帮助!

最佳答案

首先,您不应将变量设置为 null 来“帮助垃圾收集器”。现代编译器和 JVM 足够聪明,可以检测到局部变量未使用,而无需您显式设置它,因此 null 赋值的唯一作用就是降低程序的可读性。

就内存分配而言,如果您可以避免不必要的分配而不会使代码变得更复杂,那就去做吧。否则,不要过早优化您的分配 - 很可能它们不会处于关键路径上,在这种情况下您根本不需要优化它们。

关于java - 将对象指向空引用并重新分配内存或仅分配一次内存是否更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21963972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com