重複の可能性:
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.のいずれかが問題である場合、それを行う正しい方法は何ですか?
ありがとう