我在理解以下代码时遇到问题:

import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.*;

public class A
{
      public A(){
        JFrame myframe = new JFrame ("hz window");
        myframe.setLayout(new GridLayout ());
        myframe.setSize(new Dimension (500, 200));
        myframe.setVisible(true);
    }

    public static void main (String arg[]){
        new A();
        //  System.gc();                          //1
          //Runtime.getRuntime().gc();            //2
    }
}


myframe对象的范围是类A的构造函数,对吗?

然后,为什么窗口不消失(即在第1行和第2行中被垃圾收集器删除了)

我们在Java程序中创建的所有gui元素的范围是什么?

JVM在哪里保留所有指向应用程序gui对象的链接?

很抱歉有新手问题。

最佳答案

Swing会保留对每个窗口对象的引用,直到用户关闭它们或使用dispose()功能强行放置它们为止。否则,您将看到神秘消失的GUI元素。

关于java - GUI元素的垃圾收集器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9247746/

10-11 23:15