在以下代码中,Nail
一旦退出方法ypaw
或有可能泄漏,someMethod
对Dog
的引用是否结束?另外,一旦我退出类ypaw
,所有对ypaw
的引用都消失了,或者Nail中的静态引用是否会引起麻烦?请注意mPaw
和Class 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
的单个实例是mPaw
。 myDog
死后{{1}}会发生什么事(即是gc')?
答案 0 :(得分:4)
不,只要加载类的类加载器执行,静态变量就会存在。所以,永远"在许多应用程序中。
目前尚不清楚你想要实现的目标,但这段代码几乎肯定是一个坏主意。
(一般来说,可变静态数据是一个坏主意。可变静态非私有字段是真正坏主意 - 您无法控制所有访问以实现同步目的来自其他任何事情。)