2012-08-06 119 views
3

了Java/Android的垃圾收集可以说我有定义为这样的片段:静态私有变量

public class MyFragment extends Fragment { 
    private static String sample = ""; 

    public static void setSample(String s) { 
     sample = s; 
    } 
} 

为应用程序的生命周期,将采样得到的垃圾收集(以MyFragment任何引用是否不存在 - 我认为这应该不重要)?

回答

4

你说得对,MyFragment的实例数量无关紧要。

只要加载了MyFragment的类加载器处于活动状态,sample变量将实际上成为GC根。

重要的是要注意,变量从不垃圾收集 - 对象是。

3

只要该类不是unloaded,样本变量不会被垃圾收集。当且仅当其定义类装载程序 可以通过垃圾收集器回收在 §12.6讨论

类或接口可以被卸载。由引导加载器加载的类和接口可能不 卸载

2

private static String sample

将开始,当它在你的代码的第一个引用的存在(类加载器加载它),并会保持现有的活着独立对象引用。