关闭后java框架是完全丢弃的吗?

时间:2013-07-01 08:29:42

标签: java swing jframe

我有一个JFRAME,它的setDefaultCloseOperation为JFrame.DISPOSE_ON_CLOSE。但问题是它的大多数线程在被处理后没有关闭。 如果我把它放在JFrame.Exit_ON_CLOSE上,我的整个系统退出,这不是我想要的。 是否有任何方法可以在关闭后处理并完全释放所有线程和资源,而不是让我的所有系统退出?

2 个答案:

答案 0 :(得分:2)

如图here所示,在JVM退出之前,主机平台为top-level container的重量级对等体分配的某些内存可能无法回收。有利的解决方案是使用single顶级容器。 JVM可以在正常执行过程中使用多个主机线程; profile您的应用程序以识别泄漏。对于thread dump,将实时线程显示与example进行比较可能会有所帮助。

答案 1 :(得分:-1)

EXIT_ON_CLOSE将退出该应用程序。 您必须手动清除JFrame和(用户所做的任何调用的线程)。使用

frame.dispose();
  1. 将窗口关闭的侦听器附加到JFrame
  2. 触发时使用dispose方法,然后清除swing元素和(杀死用户调用的线程)。

    这将使所有其他窗口保持打开状态。