6

新しいスレッドで新しいRunnableを実行するメインスレッドがあると考えてください。これで、新しいスレッドの実行中に、Java VMのメモリが不足し、OutOfMemoryErrorがスローされます。

何が起こるのですか?ターゲットスレッドは停止しますか?メインスレッドは続行されますか?新しいスレッドがクラッシュした場合、VMはそのスレッドからメモリを再利用し、実行を続行しますか?

4

1 に答える 1

8

OutOfMemoryErrorの割り当て部分でスレッドの 1 つがスローされnewます。スラッシングを避けるために、エラーがスローされた後にかなりの量のメモリが解放される可能性があります。したがって、他のスレッドは続行でき、一定期間 OOME になる可能性は低くなります。

OOME がキャッチされない場合、スレッドは終了し、キャッチされていない例外ハンドラーが呼び出されます。終了時に、スレッドと関連オブジェクトは通常どおりガベージ コレクションに使用できます (他の手段で参照されていない場合)。

于 2009-10-08T10:55:11.837 に答える