JavaFX:从Memory清理TableView实例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaFX:从Memory清理TableView实例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1443字,纯文字阅读大概需要3分钟。
内容图文
我应该如何从内存中清理TableView实例,
从我学到的,
>删除附加到表的所有侦听器. (它是否适用于相应表的列和行?)
>清除所有列.
和
>没有对表实例的强引用.
从外部参考我做了以下,
>将焦点模型设置为null.
>设置鼠标,键侦听器为null.
> setSelectionModel为null.
> setItems为空的ObservableArraylist.
最后,我的代码如下所示.
//I gave a try for, RowFactory and ColumnFactory to null.
tableView.setRowFactory(null);
for (TableColumn column : this.tableView.getColumns()) {
column.setCellFactory(null);
column.setCellValueFactory(null);
}
tableView.getFocusModel().focus(null);
tableView.setOnMouseClicked(null);
tableView.setSelectionModel(null);
tableView.getColumns().clear();
tableView.setItems(FXCollections.observableArrayList());
tableView = null;
我的问题是:
我打开了多个表视图,当我关闭时,(与ProfileView相关的HashMapNode(来自探查器)仍在内存中而未发布)
因此,每当我关闭tableView时,我都会调用上面的代码.
另外,我使用内部类来设置如下的setCellFactory,
column.setCellFactory((TableColumn<?, ?> param) -> new EditingTableCell());
private class EditingTableCell extends TableCell<?, ?> {
//.....
}
那么,我应该如何正确地清理一个TableView实例,以便它被垃圾收集.
Java Version : 1.8.0_45
JavFX Version : 8.0.45-b11
解决方法:
3(没有对表实例的强引用)应该足够了.
如果没有更强的引用,则监听器是弱引用,不会阻止GC清理对象.
但是,如果TableView包含在Tab中,那么在关闭选项卡时它可能不是GC,因为JavaFX在其内部保留了对最后一个关闭选项卡的强引用(我花了一些时间才发现 – 我考虑这是一种不受欢迎的类似bug的行为).
内容总结
以上是互联网集市为您收集整理的JavaFX:从Memory清理TableView实例全部内容,希望文章能够帮你解决JavaFX:从Memory清理TableView实例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。