垃圾收集器的JFrame的对象 [英] garbage collector for JFrame's object
本文介绍了垃圾收集器的JFrame的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
import javax.swing。*;
public class Main
{
public Main()
{
JFrame jf = new JFrame(Demo);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(100,100);
jf.setVisible(true);
public static void main(String [] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new Main();
}
});
Runtime.getRuntime()。gc();
}
}
我打电话给 Runtime.getRuntime().gc();
用于显式垃圾回收器调用。但是窗口不会从屏幕上消失,为什么垃圾收集器不会收回JFrame的对象?
解决方案
c> JFrame 被创建后,它会在一些内部的Swing数据结构中注册自己,以允许它接收鼠标点击等事件。这意味着你的对象有一个引用,直到你告诉Swing使用 dispose()
去掉窗口。
import javax.swing.*;
public class Main
{
public Main()
{
JFrame jf = new JFrame("Demo");
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setSize(100, 100);
jf.setVisible(true);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new Main();
}
});
Runtime.getRuntime().gc();
}
}
I call Runtime.getRuntime().gc();
for explicit garbage collector invoking. But window doesn't dissapear from screen, why doesn't garbage collector reclaim JFrame's object?
解决方案
When a JFrame
is created, it registers itself in some internal Swing data structures which allow it to receive events like mouse clicks. This means there is a reference to your object lurking somewhere until you tell Swing to get rid of the window using dispose()
.
这篇关于垃圾收集器的JFrame的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文