【发布时间】:2013-12-05 20:38:03
【问题描述】:
我有一个单例类,它的实例在我的应用程序的整个生命周期中都是活动的。从其中一个单例实例方法中,我创建了一个可运行线程的实例并执行它。可运行线程实例在执行后会成为垃圾回收的候选对象,还是会因为我的单例实例始终处于活动状态而永远留在堆中?
例如:在下面的示例中,每次调用 MySingleton.getInstance().runMyThread() 时,我都会创建一个 MyRunnable 类的新实例。这些 MyRunnable 实例在 run() 方法完全执行并结束后是否会被考虑进行垃圾收集?
public class MySingleton
{
private MySingleton instance = null;
private MySingleton() {}
public static MySingleton getInstance()
{
if(instance == null)
{
instance = new MySingleton();
}
}
public void runMyThread()
{
Thread thread = new Thread(new MyRunnable()); //MyRunnable implements Runnable
thread.start();
}
}
【问题讨论】:
标签: garbage-collection singleton