1

我的 Java FX 2 应用程序中有几个 fxml 文件和控制器。

  1. LayoutController 是包含静态布局元素 BorderPane 的 layout.fxml 控制器。这个控制器有一些方法:
  • BorderPane.setHeader(加载header.fxml文件并返回Node的一些方法)
  • BorderPane.setCenter(加载center.fxml文件并返回Node的一些方法)
  • initialize(URL url, ResourceBundle resourceBundle)其中 setHeader 方法调用。

  1. HeaderController 是包含控制元素 TabPane 的 header.fxml 控制器。HeaderController 有 onSelected EventHandler。在此操作中,BorderPane.center 将插入 center.fxml。

  2. CenterController 是 center.fxml 控制器,它在初始化时插入控件元素 TableView 并用数据填充它。

我的问题是内存泄漏。我在重复选择选项卡时获得堆空间。

4

2 回答 2

0

已实现的方法,该方法清除先前创建的控制器中的所有数据,如下所示:

public void dispose() {

 table.getColumns().clear();

 table.getItems.clear();

 table = null;
}

这是正确的方法吗?

于 2012-08-30T15:41:35.577 回答
0

您是否尝试使用 JVM 选项 -XX:+HeapDumpOnOutOfMemoryError ?您可以在此处阅读有关此内容的更多信息

如果 UI 对象在每次点击时都被重新创建而不是被重用,您应该尝试关注吗?请阅读以下链接以了解更多信息:1) JavaFX 中的内存泄漏 2)节点对象未获得 GCed

于 2012-08-29T13:22:21.913 回答