静态变量的生命周期是多少

时间:2014-05-02 20:05:06

标签: java static

在以下代码中,Nail一旦退出方法ypaw或有可能泄漏,someMethodDog的引用是否结束?另外,一旦我退出类ypaw,所有对ypaw的引用都消失了,或者Nail中的静态引用是否会引起麻烦?请注意mPawClass Dog{ private Paw ypaw; //….. public void someMethod(){ Nail nail = Nail.getInstance(ypaw); } } Class Nail{ private static Paw mPaw; public static Nail getInstance(Paw p){ mPaw = p; return new Nail(); } //…. other stuff } 是同一个对象,我想知道由于静态引用,对象在内存中存在多长时间。当然假设垃圾收集器在适当的时间执行。

myDog

修改

我的意思是说我的单个Dog实例为Nail,而myDog的单个实例是mPawmyDog死后{{1}}会发生什么事(即是gc')?

1 个答案:

答案 0 :(得分:4)

不,只要加载类的类加载器执行,静态变量就会存在。所以,永远"在许多应用程序中。

目前尚不清楚你想要实现的目标,但这段代码几乎肯定是一个坏主意。

(一般来说,可变静态数据是一个坏主意。可变静态非私有字段是真正坏主意 - 您无法控制所有访问以实现同步目的来自其他任何事情。)