【发布时间】:2015-11-13 11:09:47
【问题描述】:
我有来自 Java 虚拟机的源代码。这个虚拟机只有满足这些条件(两个条件)的垃圾收集线程:
- 线程已完成(开始和完成)
- 线程对象没有任何引用
我认为它应该用 no refence 垃圾收集 未启动的线程。但是这些线程被保存在 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...
}
}
考虑:
- 测试对象不再有引用
- Test 对象线程从未启动
测试线程会被垃圾回收吗?
【问题讨论】:
-
我正在创建一个虚拟机,所以我需要了解这个概念。出于这个原因,我在这里寻求帮助:)
-
Thread实例不是真正的线程,它是控制线程的api。一旦有一个正在运行的线程,您的Thread对象将被“从线程”引用,并且在这种情况下不能被 GC。
标签: java multithreading garbage-collection