如何在Java(FX)中释放静态观察者



我正在使用javafx应用程序中的tableview的静态观察列表。

  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检查(

Anyboy可以帮助吗?

您的问题与Javafx无关。通常,您应该了解Java中如何处理参考。您可以在此处或这里找到介绍。

代码如您的示例(TableData.getData() = FXCollections.observableArrayList();(,请勿更改静态集合的内部内容。在此之后,将其定义为静态值是一种反模式。

根据您的问题和示例,我认为您是Java语言的新手。我更喜欢阅读一般Java书(请参阅此链接以获取良好的概述(。这将帮助您了解样本中的一般问题。

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

最新更新