【发布时间】:2013-11-16 04:57:55
【问题描述】:
这可能是一个非常幼稚的问题?
假设我有这样的类
class SlowConstructor {
private final int a;
private final String unReachableString;
public SlowConstructor(String random) {
unReachableString = "I am not reachable will GC will collect me " + random;
Thread.sleep(1000*3600); // ignoring Exception check for readbility
a = 100;
Thread.sleep(1000*3600);
}
}
所以我的问题是,如果我创建了 SlowConstructor 的许多对象(假设在 diff 线程中创建 50 个),并且如您所见,每个构造函数都需要两个小时才能完成。 SlowConstructor unReachableString 中的字符串引用在大约两个小时内无法从任何代码访问。如果 GC 在这两个小时内运行,它不会收集 unReachableString ref 吗?我认为它不会被垃圾收集,但为什么?从哪里可以访问 unReachableString ?
【问题讨论】:
-
不,它不重复.. 问题与是否可以对引用尚未发布的对象的数据进行 GC。
-
同意,答案很清楚。
标签: java constructor garbage-collection