【发布时间】:2016-06-15 06:48:56
【问题描述】:
我对垃圾收集器的了解很少,其中之一是它会拾取没有引用的对象。
让MyClass 是一个类,我通过这样做来制作它的一个对象
MyClass object = new MyClass();
即使我的代码正在执行,我也可以使其符合垃圾回收条件
object = null;
但是没有对象引用的对象会发生什么,比如下面的语句。
new MyClass();
我的疑惑真的是跟线程有关,我可以通过下面的代码来创建和执行线程。
public static void main(String args[])
{
new Thread() {
public void run() {
try {
System.out.println("Does it work?");
Thread.sleep(1000);
System.out.println("Nope, it doesnt...again.");
} catch(InterruptedException v) {
System.out.println(v);
}
}
}.start();
}
但是线程没有引用它,就像你知道我可以通过对象引用来创建线程但可能我不想。
- 让线程在做一个长时间运行的Task,垃圾收集器会如何反应?
- 从 GC 的角度来看,
new MyClass();语句会发生什么...
【问题讨论】:
标签: java multithreading garbage-collection