JDialog setVisible(false)vs dispose()

在对话框上使用setVisible(false)并在以后重用它是否有意义,或者每次调用dispose()更安全并创建一个新的JDialog。 内存泄漏与setVisible(假)有什么关系?

编辑:我的问题不在于退出应用程序。 有关将主框架作为父框架并在应用程序生命周期内打开和关闭的对话框的更多信息。 例如,假设我的应用程序有大约10个对话框,每次打开它们时都会显示不同的数据。 我应该重用实例并使用setVisible(),还是应该每次都创建一个新的Dialog并在关闭时处理它们。

我建议使用dispose()释放资源并释放内存。 如果要再次显示该对话框,只需调用setVisible(true)


重要的是要注意,当Java虚拟机(VM)中的最后一个可显示窗口被丢弃时,VM可以终止。 有关更多信息,请参阅AWT线程问题 。

我仍然看不出between JDialog#dispose();任何差异between JDialog#dispose();JDialog.setVisible(false) 在这里更多,它们中的每一个都可以被唤醒以供重用,并且无论是否被处置或可见

我认为这个问题必须分成三个区别

1)一些JFrameJDialogJWindow父级( exist only is is there JFrame ),最后一个必须关闭灯

2) 没有JDialog父级

3)仍然存在另一个JFrame, JDialog or JWindow ,然后最后一个必须关闭灯

  • 可以通过使用 – > Window[] wins = Window.getWindows();
  • 最后一个必须关灯 – > System.exit(0);
  • 我建议在所有可能的情况下必须存在可见的JFrameJFrame.EXIT_ON_CLOSE ,或者另一种方式可以用System.exit(0);实现WindowsListener System.exit(0);

调用dispose()释放与对话框关联的资源。 dispose()后,您可以保持对话框。 如果您担心放置太多对话框,请使用WeakReference来保存引用。 这将确保您不使用的对话只能在垃圾收集中存活,只要它们占用的空间不是必需的。