如何在Java(fx)中释放静态ObservableList

时间:2019-05-23 06:22:18

标签: java

我在javafx应用程序中的表视图中使用了静态的可观察列表。

  public class TableData {
          private static ObservableList<MyObject> data = FXCollections.observableArrayList();

          public static ObservableList<MyObject> getData(){
                 return data;
          }
  }

当我加载新数据时,我尝试了几种方法来删除“旧”数据以释放内存,例如

    TableData.getData().clear();

    TableData.getData() = FXCollections.observableArrayList();

甚至

     for(int i=0; i< TableData.getData().size(); i++){
           MyObject mo = TableData.getData().get(i);
           mo=null;
     }

但是仍然没有释放内存(已通过netbeans Analyzer检查)

任何男孩都能帮忙吗?

1 个答案:

答案 0 :(得分:1)

您的问题与JavaFX无关。通常,您应该学习如何在Java中处理引用。您可以找到简介herehere

类似于示例(TableData.getData() = FXCollections.observableArrayList();)的代码不会更改静态集合的内部。在此旁边将这样的东西定义为静态值是反模式。

根据您的问题和示例,我假设您是Java语言的新手。我更喜欢阅读Java通用书籍(有关很好的概述,请参见this link)。这将帮助您了解样本中的一般问题。

通常,您在几乎所有面向对象的语言中都具有相同的行为,因此即使是有关OOD的书/教程也可能是一个好主意:)