Java 线程和垃圾回收器
2022-09-01 20:26:12
可能的重复:
是否收集了 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()'中的线程结束后,这些实例是否会被GC删除,或者我们是否浪费了内存(“内存泄漏”)?
如果任一 1.或 2.是一个问题,正确的方法是什么?
谢谢