7

线程是在运行后自行删除并收集垃圾,还是在run()方法完成后仍继续存在并消耗内存?

例如:

Class A{
  public void somemethod()
  {
  while(true)
  new ThreadClass().start();
  }

   public class ThreadClass extends Thread{
        public ThreadClass()
        {}
        @Override
        public void run() {......}
     }
}

我想澄清这个线程是否会自动从内存中删除,或者是否需要明确完成。

4

4 回答 4

9

这将自动发生,即一旦线程完成其运行方法,内存将自动释放。

于 2013-05-26T20:21:03.370 回答
1

线程只存在到它们的 run 方法结束,之后它们才有资格进行垃圾收集。

如果您需要内存非常宝贵的解决方案,您可能需要考虑ExecutorService。这将为您处理线程并让您专注于逻辑而不是处理线程和内存。

于 2013-05-26T20:31:17.307 回答
0

线程将在其运行方法完成后被垃圾收集。值得注意的例外是当您使用 android 调试器时。android 调试器将阻止对它知道的对象进行垃圾收集,其中包括已完成运行的线程。

为什么线程在 Android 上会泄漏?

于 2014-08-08T17:36:38.810 回答
0

线程在方法完成时会自动进行垃圾收集run,因此您不必显式执行此操作。

于 2013-05-26T20:36:19.437 回答