可能是重复问题:
Java线程是否会被垃圾回收
考虑以下类:
class Foo implements Runnable {
public Foo () {
Thread th = new Thread (this);
th.start();
}
public run() {
... // long task
}
}
如果我们通过进行以下操作创建多个Foo
的实例:new Foo();
new Foo();
new Foo();
new Foo();
(请注意,我们不会保留它们的指针。)
在线程中的
run()
方法结束之前,这些实例能否被垃圾回收器删除?(换句话说,这些Foo
对象是否有引用关系?)另一方面,在线程中的
run()
方法结束后,这些实例是否会被垃圾回收器删除,或者我们正在浪费内存(出现 "内存泄漏")?如果问题出现在 1 或 2 中,正确的解决方式是什么?
谢谢