绑定和内存泄漏

时间:2015-04-22 06:17:18

标签: memory-leaks javafx

问题

示例用例:

  • 我有一个显示状态指示器的控件。仪表的视觉状态绑定到控件的属性
  • 控件是拓扑图的一部分。所以取决于拓扑结构e。 G。一次可以显示100个这样的控件
  • 有几种拓扑结构。每次切换到另一个拓扑视图时,都会重新生成整个图形

问题

这是否会导致内存泄漏,您是否必须在创建新拓扑视图之前在旧拓扑视图中执行手动取消绑定?与绑定类似,您是否必须手动删除事件处理程序?

绑定和事件处理程序位于控件内。因此,一旦控件不再可访问,应该可以收集它的垃圾。因此,我认为你不必做任何事情,但我不知道。

非常感谢您的专业知识!

1 个答案:

答案 0 :(得分:0)

如果您查看JavaDocs

  

[...]我们实现中的所有绑定都使用WeakInvalidationListener的实例,这意味着通常不需要处理绑定。但是,如果您计划在不支持WeakReferences的环境中使用您的应用程序,则必须处置未使用的Binding以避免内存泄漏。

因此,如果您使用或扩展默认Binding,垃圾收集器应该能够完成其工作。

如果不这样做,请务必执行并致电Binding.dispose()

一如既往:如果某个对象不再被任何其他对象引用,则会收集垃圾(将来的某个时刻)。因此,通常不需要在这个方向上专门实现,因为它往往会使代码混乱。