我目前正在对我的应用程序进行内存扫描,我只是快速询问在不再需要该类时如何处理类中的public static
变量。一个例子是网络请求:
public class NetworkRequest {
public static String URL = "www.somestring.com/endpoint?withsomeparameters=true"
public void perform(){
// the rest of the request logic...
}
}
在我开始这样的课程之后:
NetworkRequest networkRequest = new NetworkRequest();
networkRequest.perform();
networkRequest = null;
我的public static
字段是否阻止此类正确地进行垃圾回收?
然后又回答同样的问题:
public static final
private static
private static final
。 再次感谢您的帮助
答案 0 :(得分:1)
没有。您的课程在不再使用时可以进行垃圾回收。该静态字段是使用String的类,而不是使用类的String。
答案 1 :(得分:1)
不,该静态成员没有问题。如果无法访问垃圾收集器仍然可以为该对象执行其工作。
Java中的所有对象都存在于堆上或堆栈上。对象 使用new运算符在堆上创建。然后引用 附在他们身上。如果引用变为null或超出范围 (例如,块结束),GC意识到无法到达 那个对象再一次回收它。如果你的参考是在 静态变量,它永远不会超出范围,但你仍然可以设置它 为null或另一个对象。
静态变量用作"根"到GC。因此,除非您明确地将它们设置为null,否则只要程序存在,它们就会存在,所以从它们可以到达的所有内容都可以使用。