当前位置: 首页 > 知识库问答 >
问题:

JavaFx TableView cellFactory内存开销

鲁旭
2023-03-14

我的问题与来自JavaFX的TableView有关。JavaFx建议使用属性来存储将在表中显示的值(SimpleSttringProperty等),如下面的示例所示。

这难道不是Java的内存开销(为每个单元格创建另一个对象)吗?我将使用TableView从数据库中显示超过10,000行。难道没有一种方法可以避免这种情况,并像Swing之前那样简单地工作吗?TableView不能只获取要表示的值吗?对于所有的解决方案,我发现每个单元格都需要ObservableValue,这可能需要大量内存。

TableColumn<Person,String> firstNameCol = new TableColumn<Person,String>("First Name");
firstNameCol.setCellValueFactory( element -> element.getValue().firstName );
or 
firstNameCol.setCellValueFactory( new PropertyValueFactory<Person, String>("firstName"));
public static class Person {

    public final SimpleStringProperty firstName;
    private final SimpleStringProperty lastName;
    private final SimpleStringProperty email;

    private Person(String fName, String lName, String email) {
        this.firstName = new SimpleStringProperty(fName);
        this.lastName = new SimpleStringProperty(lName);
        this.email = new SimpleStringProperty(email);
    }

共有1个答案

明正德
2023-03-14

不需要在模型中使用属性。这里有一个例子

public class Person {

    private String firstName;
    private String lastName;
    private String email;

    public Person() {
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

只需在需要时创建属性即可。

firstNameCol.setCellValueFactory(cdf -> new SimpleStringProperty(cdf.getValue().getFirstName()));
 类似资料:
  • 我正在对YARN上的Spark作业进行一些内存调优,我注意到不同的设置会给出不同的结果,并影响Spark作业运行的结果。但是,我很困惑,不明白为什么会这样,如果有人能给我一些指导和解释,我会很感激。 我将提供一些背景资料和张贴我的问题和描述案例,我已经经历了他们在下面。 我的环境设置如下: 存储器20G,每个节点20个vCore(共3个节点) Hadoop 2.6.0 火花1.4.0 我的代码对R

  • 问题内容: 我想知道与ArrayList相比,Java HashMap的内存开销是多少? 更新: 我想提高搜索相同对象的大包装(600万以上)的特定值的速度。 因此,我正在考虑使用一个或多个HashMap而不是使用ArrayList。但是我想知道HashMap的开销是多少。 据我了解,密钥不是存储的,只是密钥的哈希,因此它应该类似于 对象的哈希大小+一个指针 。 但是使用什么哈希函数?是对象提供的

  • 我正在使用Netbeans 7.2开发JavaFX2.2应用程序。我正在使用一个treeview,我扩展了TreeCell,为每个TreeItem提供一个上下文菜单,其中有一个MenuItem具有“collpase all”功能。treeview的最大深度级别为4。当用户右键单击级别2的TreeItem并单击“全部折叠”MenuItem时,我想使级别3的所有TreeItem折叠(setExpand

  • 我的JBoss服务器出现了一个奇怪的问题:引发的异常: 我寻找内存不足的情况,但内存可用性看起来很好: 以前有没有人遇到过这个GC异常,当时似乎内存很大?

  • 只要有可能的话,就尽量使用散列键而不是字符串键来储存键值对数据,因为散列键管理方便、能够避免键名冲突、并且还能够节约内存。 具体实例: 节约内存:Instagram的Redis实践 blog.nosqlfan.com/html/3379.html 如果将redis作为cache进行频繁读写和超时删除等,此时应该避免设置较大的k-v,因为这样会导致redis的 内存碎片增加,导致rss占用较大,最后

  • 内存 [KNL,BOOT] mem=nn[KMG] 强制指定内核使用多少数量的内存。仅在你想限定内存使用量时,才需要指定这个选项。同时为了避免PCI设备使用指定范围之外的内存,你还应该配合"memmap="一起使用。 [KNL] memmap=exactmap 表示将要使用随后的"memmap=..."等选项进行精确的E820内存映射(因为有时候E820报告的并不准确),同时禁止内核进行任何自动的