我有来自Java虚拟机的源代码。这个VM只收集满足这些条件(两个条件)的垃圾收集线程:
我认为应该用没有反抗来垃圾收集未启动的主题。但是这些线程被保存在VM内存中。这是对的吗?
示例代码:
public class Test implements Runnable{
private Thread thread;
public Test() {
thread = new Thread(this);
}
@Override
public void run() {
//This thread never runs...
//My question is about garbage collector in a situation like this...
}
}
考虑到:
测试线程会被垃圾回收吗?
答案 0 :(得分:1)
Thread
或Runnable
类的实例就像任何其他类的实例。所以,是的,如果引用超出范围,它将被GCed。
注意:您首先必须创建Test
的实例。
正在运行的线程充当GC的root用户,不会进行GCed。它的启动线程(通过调用实际创建执行线程的start()
并使其变得特殊。