我已经阅读了帖子What are the roots?,但它没有解决我的问题。该线程基本上解释了在什么条件下对象准备垃圾收集。这里的问题是在某些情况下是否满足条件,如果是,这种行为是否会导致问题。
通过术语活跃,我的意思是:
Thread
对象,JFrame
对象(仍然是
有一个可见的GUI界面)。在 Java:A Beginner's Guide 一书中,我经常发现创建一些对象的代码,然后在它们仍处于活动状态时丢弃对它们的唯一(明显)引用。这会导致可能过早的垃圾收集并导致某些问题,或者运行时系统实际上有对这些活动对象的引用(因此在前面的文本中带括号的明显),所以程序员可以什么都没有?以下是两个例子:
1)关注Thread
:
{
Thread thrd = new Thread(...);
... // no thrd.join();
}
2)关注JFrame
:
class SwingDemo {
SwingDemo() {
JFrame jfrm = new JFrame("A Simple Swing Application");
...
jfrm.setVisible(true);
}
...
}