在下面的代码中,Nail的引用是否会ypaw在我退出该方法时立即结束,someMethod或者是否存在泄漏的可能性?另外,一旦我退出类Dog,所有引用都ypaw消失了还是 Nail 中的静态引用会导致麻烦?请注意,ypaw和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
}
Run Code Online (Sandbox Code Playgroud)
编辑
我的意思是说我有一个 Dog as 的单个实例,myDog而我的单个实例Nail是 through myDog。发生什么mPaw后myDog模具(即是gc'ed)?
不,静态变量的生命周期与加载类的类加载器一样长。所以这在许多应用程序中是“永远”的。
目前尚不清楚您要实现的目标,但此代码几乎肯定是个坏主意。
(通常,可变静态数据是一个坏主意。可变静态非私有字段是一个非常糟糕的主意 - 除了其他任何事情之外,您不可能出于同步目的控制所有访问。)
| 归档时间: |
|
| 查看次数: |
877 次 |
| 最近记录: |