如果java中的线程正在运行,并且我没有任何线程引用,那么线程会被垃圾收集吗



As in the Thread.State is RUNNING,I set the Thread reference to null after I started the Thread

正如在其他问题的答案中所述,线程不会被垃圾收集。

根据定义,只有当任何活动线程都无法访问对象时,对象才是垃圾收集的对象,并且我认为处于运行状态的线程是实时线程.:)

来自Java 7规范(12.6.1):

可访问对象是指可以在任何潜在的持续中访问的任何对象来自任何活动线程的计算。

在内部,我确信JVM的某些部分仍然引用了该线程,例如调度程序。

如果线程正在运行,则该线程不符合垃圾回收的条件。一个正在运行的线程有任务,因此GC一个正在执行的线程可能会对其任务产生不利影响。

最新更新