我有一个JFRAME,它的setDefaultCloseOperation为JFrame.DISPOSE_ON_CLOSE。但问题是它的大多数线程在被处理后没有关闭。 如果我把它放在JFrame.Exit_ON_CLOSE上,我的整个系统退出,这不是我想要的。 是否有任何方法可以在关闭后处理并完全释放所有线程和资源,而不是让我的所有系统退出?
答案 0 :(得分:2)
如图here所示,在JVM退出之前,主机平台为top-level container的重量级对等体分配的某些内存可能无法回收。有利的解决方案是使用single顶级容器。 JVM可以在正常执行过程中使用多个主机线程; profile您的应用程序以识别泄漏。对于thread dump,将实时线程显示与example进行比较可能会有所帮助。
答案 1 :(得分:-1)
EXIT_ON_CLOSE将退出该应用程序。 您必须手动清除JFrame和(用户所做的任何调用的线程)。使用
frame.dispose();