Java 使用自动垃圾收集。当您将对象设置为 null 并且它是剩余的最后一个引用时,JVM 将回收使用的内存。
但是,在您的情况下,可能是创建了一个线程(使用 GUI,这通常是这种情况)并为其提供了对当前对象的引用。在这种情况下,将引用设置为 null 无效,因为其他东西仍然可以访问该对象。
为了正确关闭您的 GUI,您必须调用 close 方法。对于 JFrame,你可以试试这个:
myGui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
当用户单击关闭按钮时,它将关闭应用程序。如果您想通过程序控制关闭,那么您可以尝试:
private void closeItDown() {
WindowEvent event = new WindowEvent(this, WindowEvent.WINDOW_CLOSING);
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(event);
}
...并调用此方法。您不必将任何内容设置为 null,此时 JVM 可能会为您收集垃圾。不能保证,但可能在这一点上,也许以后,或者现在......或者任何时候:)