【发布时间】:2013-12-14 14:03:11
【问题描述】:
为什么在下面的程序中调用 System.exit(0) 下面?只有当映射引用变量为空时才应该调用它。
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
public class ReferencesTest {
private WeakReference<Map<Integer, String>> myMap;
public static void main(String[] args) {
new ReferencesTest().doFunction();
}
private void doFunction() {
Map<Integer, String> map = new HashMap<Integer, String>();
myMap = new WeakReference<Map<Integer, String>>(map);
int i = 0;
while (true) {
if (myMap != null && myMap.get() != null) {
myMap.get().put(i++, "test" + i);
System.out.println("im still working!!!!"+i+" Map Size"+myMap.get().size());
System.gc();
} else {
System.out
.println("*******im free*******");
System.exit(0);
}
}
}
}
输出的最后几行是
im still working!!!!15586 Map Size15586
im still working!!!!15587 Map Size15587
im still working!!!!15588 Map Size15588
*******im free*******
【问题讨论】:
标签: java map reference weak-references