Java私有变量的Java / Android垃圾收集

时间:2012-08-06 15:18:04

标签: java android garbage-collection

让我们说我有一个片段定义如下:

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

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

对于应用程序的生命周期,样本会收集垃圾(是否存在对MyFragment的任何引用 - 我觉得这不应该重要)?

3 个答案:

答案 0 :(得分:4)

MyFragment的实例数无关紧要。

只要加载sample的类加载器处于活动状态,MyFragment变量就会有效地成为GC根目录。

重要的是要注意变量永远不会被垃圾收集 - 对象

答案 1 :(得分:3)

只要该类不是unloaded,样本变量就不会被垃圾收集。

  

当且仅当其定义类时,才可以卸载类或接口   如下所述,垃圾收集器可以回收加载器   §12.6。引导加载程序加载的类和接口可能不会   被卸下

答案 2 :(得分:2)

private static String sample

在代码中首次引用时(类加载器加载它)将开始存在,并且将独立于现有的对象引用而保持活动状态。