何时对具有静态数据的类进行垃圾收集

Ank*_*kur 5 java static garbage-collection

我希望在整个应用程序中轻松提供一些数据.我在类中有一些带有静态数据的变量,可以在几个不同的点上写入和读取.

这个工作正常一段时间,但现在我希望能够检索到一个ArrayList,我得到的只是"null".

我想知道静态类是否已被发送到"垃圾收集器".不知道发生了什么,如果你可以提供帮助,那将非常感激.

dfa*_*dfa 9

您可以尝试使其成为最终,并重新编译代码,以查看是否有其他类更改对null的引用:

public class Global {

    public final static List<String> data = new ArrayList<String>();

}
Run Code Online (Sandbox Code Playgroud)

这允许写:

Global.data.add("foo");
Run Code Online (Sandbox Code Playgroud)

但不是:

Global.data = null;
Run Code Online (Sandbox Code Playgroud)

  • @uncleo:Java中没有静态类. (3认同)
  • @Robert:Java中有静态类:class Foo {static class Bar {}} (3认同)

Rvd*_*vdK 2

如果您可以调用该函数,则该对象将不会被垃圾回收,因为仍然存在对其的引用。您存储的是指向数组列表还是对象本身的指针?