垃圾收集器何时应该收集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个类不清楚。。请帮帮我。。。