垃圾收集器何时应该收集JavaFX选项卡?

垃圾收集器何时应该收集JavaFX选项卡?,java,garbage-collection,javafx,Java,Garbage Collection,Javafx,我有选项卡窗格,其中有选项卡s。我正在创建新的选项卡,并将其添加到我的选项卡窗格。 然后我关闭选项卡,并以编程方式将其从TabPane中删除 选项卡未设置为null。这是正确的行为吗?如何清理/销毁此选项卡对象?垃圾收集器不会销毁您仍持有引用的对象 假设您有一个局部变量或一个字段myTab,那么只需赋值即可 myTab = null; 然后让垃圾收集器完成他的工作。如果对此对象实例有其他引用,请对其执行相同的操作。您的选项卡可能仍有一个EventHandler保存该引用 tab.setOnCl

我有
选项卡窗格
,其中有
选项卡
s。我正在创建新的
选项卡
,并将其添加到我的
选项卡窗格
。 然后我关闭选项卡,并以编程方式将其从
TabPane
中删除


选项卡
未设置为
null
。这是正确的行为吗?如何清理/销毁此
选项卡
对象?

垃圾收集器不会销毁您仍持有引用的对象

假设您有一个局部变量或一个字段
myTab
,那么只需赋值即可

myTab = null;

然后让垃圾收集器完成他的工作。如果对此对象实例有其他引用,请对其执行相同的操作。

您的选项卡可能仍有一个EventHandler保存该引用

tab.setOnClosed(null);
例如:

// I make setOnClose handler in my constructor
// My set on close handler will close my project
tab.setOnClosed(new EventHandler<Event>() {
    @Override
    public void handle(Event t) {
        closeProject();
    }
});

// Somehow my setOnClose handler still exists after closing the tab

public void closeProject() {

// Setting the setOnClose handler to null fixes the garbage collection issue for me
tab.setOnClosed(null);

tab.setUserData(null);
tab = null;
}
//我在构造函数中生成setOnClose处理程序
//我的关闭处理程序集将关闭我的项目
tab.setOnClosed(新的EventHandler(){
@凌驾
公共无效句柄(事件t){
closeProject();
}
});
//不知何故,我的setOnClose处理程序在关闭选项卡后仍然存在
公共工程({
//将setOnClose处理程序设置为null为我解决了垃圾收集问题
tab.setOnClosed(空);
tab.setUserData(空);
tab=null;
}

请显示您的代码。这是一个简单的代码,我刚刚添加了事件处理程序,它通过setOnClosed(event)从TabPane中删除tab;方法。没什么特别的。我只是想知道这是不是正确的行为。正确的行为是什么?你的密码?JavaFX类?垃圾收集器?是什么让你认为有些事情不正确?发生了什么事?我想知道Java/JavaFx是否应该在TabPane关闭和/或移除Tab后立即清理/销毁Tab,就是这样。我在第一侧选项卡中有1000个类,然后Tab为null,但这1000个类不清楚。。请帮帮我。。。