JFrame对象准备好进行垃圾回收的条件

时间:2015-08-13 02:57:32

标签: java swing garbage-collection jframe

this thread开始,即使程序员没有对某个对象(无法访问)的剩余引用,我也知道它,它可能还没有准备好进行垃圾回收。尚未连接但尚未加入的Thread尚未加入,就是这样一个例子。我的问题是:是一个尚未关闭的JFrame尚未关闭(因此,仍然有一个工作和可见的GUI界面)准备垃圾收集?如果答案是肯定的,这种行为是否会中断或强制关闭GUI界面?例如,以下代码片段取自 Java:初学者指南一书:

class SwingDemo {
  SwingDemo() {
    JFrame jfrm = new JFrame("A Simple Swing Application");
    jfrm.setSize(275, 100);
    jfrm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JLabel jlab = new JLabel(" Swing defines the modern Java GUI.");
    jfrm.add(jlab);
    jfrm.setVisible(true);
  }
  ...
}

请注意,JFrame构造函数返回时,无法再访问创建的SwingDemo对象。

1 个答案:

答案 0 :(得分:2)

您的一个假设是错误的:JFrame 可达,一种方式是通过Windows#getWindows()。关于此方法的JVM:

  

返回由此应用程序创建的所有Windows(包括拥有者和无主人)的数组。如果从applet调用,则该数组仅包含该applet可访问的Windows。