Java 如何释放JFrame资源?
我有个问题想问你:Java 如何释放JFrame资源?,java,swing,Java,Swing,我有个问题想问你: 在JFrame上调用setVisible(false),会使它消失,对吗? 再次调用setVisible(true)会使它再次出现,这意味着该对象完全仍在RAM中,对吗? 如果我需要在按下“关闭”按钮后立即清除所有内容,正确的方法是什么(当我按下主界面中的“配置”按钮时,会显示此JFrame,因此当我按下“关闭”按钮时,它应该消失(也从RAM中消失)? 谢谢您的时间,也很抱歉我的英语不好您必须设置框架的默认关闭操作 frame.setDefaultCloseOperation
在
JFrame
上调用setVisible(false)
,会使它消失,对吗?再次调用
setVisible(true)
会使它再次出现,这意味着该对象完全仍在RAM中,对吗?如果我需要在按下“关闭”按钮后立即清除所有内容,正确的方法是什么(当我按下主界面中的“配置”按钮时,会显示此
JFrame
,因此当我按下“关闭”按钮时,它应该消失(也从RAM中消失)?谢谢您的时间,也很抱歉我的英语不好您必须设置框架的默认关闭操作
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
您也可以尝试在机架关闭/处置后进行清理
找到相关的。玩弄
JFrame的可见性将不允许操作系统回收窗口分配的本机资源,一种方法是调用JFrame\dispose
/**
* Releases all of the native screen resources used by this
* {@code Window}, its subcomponents, and all of its owned
* children. That is, the resources for these {@code Component}s
* will be destroyed, any memory they consume will be returned to the
* OS, and they will be marked as undisplayable.
* ...
*/
public void dispose() {
doDispose();
}
关闭JFrame时调用dispose的另一种方法是执行以下操作
frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
您可能正在寻找CardLayout
或一个对话框。dispose
将释放框架所持有的本机资源,释放更多内存,但是,如果再次使框架可见,则需要更长的时间,因为它需要重新创建这些资源。您还可以通过设置defaultCloseOperation
来影响使用的dispose方法。为了完全释放框架,您需要处理它(因此至少在代码> Debug关闭操作> /代码>设置为<代码> AddieTyOnOx<<代码>),并删除所有对框架及其内容的引用,包括要移动到新视图的ListEnsif,您应该考虑使用<代码> CARDFrase如果要从用户处收集一些会影响当前视图的信息,应使用对话框。请参阅和了解更多详细信息我不能使用cardLayout,因为主窗口是使用javaFX构建的,并且此选项窗口处于swing状态,我认为dispose()是正确的答案,它将终止JVM,但是dispose\u ON\u CLOSE
显然会导致框架释放其本机资源,在取消对框架及其内容的引用之前,它不会被垃圾收集。从声音上看,OP想要处理框架,这样他们可以移动到程序的其他部分,但是允许框架被垃圾收集这很有趣,然后他可能会寻求手动清理。这不是答案,退出关闭等于一个系统。退出(0),整个程序被终止,不仅仅是一个frame@MaProgrammer已经指出这就是为什么我给出了手动清理的第二个链接。