我使用外部资源,如文件或数据库连接,我需要关闭它们才能让它们离开.
我是否需要使用Swing组件做同样的事情?如果是,那怎么样?
通常,在完成对象时不需要处置对象(尽管将对它们的引用设置为null可能允许它们更快地进行GC).但是,AWT和Swing对象分配了一些需要释放的本机资源.此外,AWT线程将窗口视为顶级对象,防止它们被垃圾收集并且JVM终止.
因此,当您完成窗口时,您需要处理它,这将释放它已分配的本机资源.一种方法是在其上调用Window.dispose().但是,更好的选择是在初始化每个根窗口时调用JFrame.setDefaultCloseOperation().如果你传递它DISPOSE_ON_CLOSE,它会在用户关闭窗口时处理它自己.当最后一个这样的窗口关闭时,AWT线程将停止阻塞并允许JVM关闭(假设您没有运行任何其他异常线程).或者,您可以传递它EXIT_ON_CLOSE,这将导致您的窗口调用System.exit(),它告诉JVM您的应用程序已完成并正常终止.