【问题标题】:JList reserving memory for dataJList 为数据保留内存
【发布时间】:2018-07-05 08:21:35
【问题描述】:

我正在制作两个 JList。第一个是可以选择在按钮单击事件时转移到另一个列表的项目列表。一个列表给出一串数据,例如 JList(data),另一个是新 JList() 对象的空声明。

list1 = new JList<String>(data);
list2 = new JList<String>();

如何为列表 2 保留与为列表 1 分配的内存量相同的内存量?

【问题讨论】:

    标签: java arrays memory memory-management


    【解决方案1】:

    事情就是这样。 JList 只是其他事物的视图。而对于使用new JList() 创建的JList,它是一个只读空模型的视图。

    因此,为创建list2 的代码保留内存是没有意义的。

    如果您希望 list2 在您的 UI 中更新,那么您需要使用 ListModel 实例化 list2。保留空间的任何考虑都是为了实现您选择的ListModel 以及您创建它的方式。

    但是,总体而言,预分配可能无关紧要。如果列表比较小,增长模型的成本将是“噪音”。如果列表足够大以至于很重要,那么:

    1. 列表元素使用的 CPU/内存可能会淹没列表开销
    2. 与视图相关的其他 CPU 开销(例如侦听器回调)可能会使 UI 变得迟缓,并且
    3. (人类)UI 人机工程学会有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-05
      • 2014-02-17
      • 2015-05-17
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2015-04-28
      • 1970-01-01
      相关资源
      最近更新 更多