我的问题:我正在从 JFreeChart 数据库下载大量数据。我想在不使用原始表的情况下优化数据内存使用。
使用集合需要使用对象。
我想知道是否可以使用像 IntStream
这样的原始 Stream 来优化内存使用而不是例如 LinkedList<Integer>
.
我不知道如何制定可靠的基准。
最佳答案
如果您的起点是 LinkedList<Integer>
,只需将其替换为 ArrayList<Integer>
将显着减少内存消耗,如 When to use LinkedList over ArrayList? 中所述。 。由于装箱的整数是小对象,其中一些甚至在装箱相同的值时会被重用,因此 this answer 的图具有重要意义。
如果你想让它更简单,只需使用 int[]
。如果您需要可以增量填充的内容,Stream API 确实有一个选择。使用 IntStream.builder()
获得 IntStream.Builder
您可以重复添加新的 int
值(value)观。一旦包含所有值,您可以调用 build().toArray()
就可以得到 int[]
包含所有值的数组,也可以直接对 IntStream
进行过滤和聚合操作返回者 build()
(如果你可以将聚合运算表示为归约)。
关于java - 内存分配原始流与原始类型表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44949322/