java - 在让 Swing 组件被垃圾收集之前,我是否需要释放它们?

标签 java swing

当我使用外部资源(例如文件或数据库连接)时,我需要在释放它们之前关闭它们。

我需要对 Swing 组件执行同样的操作吗?如果是的话怎么办?

最佳答案

通常,在使用完对象后不需要释放它们(尽管将它们的引用设置为 null 可能会让它们更快地被 GC 回收)。但是,AWT 和 Swing 对象会分配一些需要释放的 native 资源。此外,AWT 线程将窗口视为顶级对象,从而防止它们被垃圾收集和 JVM 终止。

因此,当您使用完窗口后,您需要处理它,这会释放它已分配的 native 资源。一种方法是调用 Window.dispose () 在上面。然而,更好的选择是调用 JFrame.setDefaultCloseOperation () 当您初始化每个根窗口时。如果您将其传递给 DISPOSE_ON_CLOSE,它将在用户关闭窗口时自行处理。当最后一个这样的窗口关闭时,AWT 线程将停止阻塞并允许 JVM 关闭(假设没有任何其他异常线程在运行)。或者,您可以向它传递 EXIT_ON_CLOSE,这将导致您的窗口调用 System.exit(),它告诉 JVM 您的应用程序已完成并正常终止。

关于java - 在让 Swing 组件被垃圾收集之前,我是否需要释放它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/320682/

相关文章:

java - 在android中获取外部SD卡的正确路径

Java Eclipse Swing 设计

java - 有人可以解释为什么该行没有在此 TableLayout 中换行文本吗?

java - 调用 java 属性文件时应该使用哪个路径?

java - 添加指向 AlertDialog 上按钮的链接,该按钮在应用程序启动时显示

java - 如何将我单击的 JButton 的组件传输到我单击的第二个 JButton?

java - 权威的 Java Swing 入门指南和引用是什么?

Java GUI 组件和面板对齐

java - 动态生成Testng.xlm来运行测试

java - 如何使用 Open Cloud in swing 以编程方式布局动态词云?