什么时候静态变量被垃圾收集?

时间:2015-10-26 13:16:15

标签: java android static-members

我有一个静态工厂方法,它将返回一个片段对象。

private static String  final A1="a1";
private static String  final A2="a2";
private static String  final A3="a2";
private static String  final A4="a4";

public static MyFragment newInstance(int index) {
    MyFragment f = new MyFragment();
    Bundle args = new Bundle(4);
    args.putInt(A1, index);
    args.putInt(A2, index);
    args.putInt(A3, index);
    args.putInt(A4, index);
    f.setArguments(args);
    return f;
}

我在oncreate()

中得到它
getArguments().getInt(A1, 0);

现在我的问题是:我正在创建一些MyFragment对象,如下面的

List<Fragment> fragments = new ArrayList<>();
fragments.add(MyFragment.newInstance(defaultId));
int i = 1;
for (Categories categories : mCategories) {
    String id = categories.getCategory_id();
    String name = categories.getCategory_name();
    //  String slno = categories.getSlno();
    fragments.add(MyFragment.newInstance(defaultId));
    Titles[i] = name;
    i++;
}

由于变量A1-A4为静态,它会清除活动破坏时的内存吗?或者我需要在onDistroy中将变量分配为null

请帮我澄清疑问?

1 个答案:

答案 0 :(得分:2)

在加载类时会分配一个静态变量,如果加载该类的类加载器本身已被释放,则只会进行垃圾收集。

  

当且仅当其定义类时,才可以卸载类或接口   垃圾收集器可以回收加载程序[...]类和   由引导加载程序加载的接口可能无法卸载。

查看类似问题的答案Are static fields open for garbage collection?