源代码图像
警告图像
public static TestObject testObject;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Log.d(TAG,"onCreate()");
Context getApplicationContext = getApplicationContext();
testObject = new TestObject(getApplicationContext);
testObject的对象存储在堆区域中,静态区域中的引用变量存储testObject对象的引用值。那么,如果对象引用值存储在静态引用变量中,并且存储了新对象的引用值,那么具有存储在静态参考变量中的引用值的对象是否会因为不再接收来自静态引用变量的引用而受到GC的影响?如果它可能会受到GC的影响,为什么会生成一条警告消息,说明在使用static时可能存在内存泄漏?
如果应用程序上下文的生命周期与应用程序进程开始和结束时相同,即使将应用程序上下文作为静态区域中引用对象的参数输入,也不会发生内存泄漏。然而,要使用引用静态区域中对象的结构,使用singleton模式被认为是更好的结构。人们认为新操作员可以节省计算机资源。此外,从内存的角度来看,使用引用静态区域中对象的结构被认为是不好的,因为引用的对象一直加载到内存中,直到进程结束。为了使用更少的内存,我认为最好使用引用静态区域中对象的结构,并且只使用必要的对象。