【问题标题】: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 以及您创建它的方式。
但是,总体而言,预分配可能无关紧要。如果列表比较小,增长模型的成本将是“噪音”。如果列表足够大以至于很重要,那么:
- 列表元素使用的 CPU/内存可能会淹没列表开销
- 与视图相关的其他 CPU 开销(例如侦听器回调)可能会使 UI 变得迟缓,并且
- (人类)UI 人机工程学会有问题。