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

静态私有变量的Java/Android垃圾收集,java,android,garbage-collection,Java,Android,Garbage Collection,假设我有一个片段定义如下: public class MyFragment extends Fragment { private static String sample = ""; public static void setSample(String s) { sample = s; } } 在应用程序的生命周期内,sample是否会被垃圾收集(无论是否存在对MyFragment的任何引用,我认为这不重要)您是对的,MyFragment的实例数不重要 只要加

假设我有一个片段定义如下:

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

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

在应用程序的生命周期内,sample是否会被垃圾收集(无论是否存在对MyFragment的任何引用,我认为这不重要)

您是对的,MyFragment的实例数不重要

只要加载了
MyFragment
的类加载器处于活动状态,那么
sample
变量实际上就是GC根


需要注意的是,变量永远不会被垃圾收集—对象是。

只要类没有垃圾收集,样本变量就不会被垃圾收集

当且仅当类或接口的定义类 如中所述,垃圾收集器可以回收装载器 §12.6. 引导加载程序加载的类和接口可能不可用 卸下


私有静态字符串示例

将在代码中首次引用它时开始存在(类加载器加载它),并且将保持活动状态,与现有对象引用无关