我的问题:我正在从数据库中为JFreeChart下载大量数据。我想在不使用原始表的情况下优化数据内存使用。
使用集合需要使用对象。
我想知道我是否可以使用像IntStream
这样的原始流来优化内存使用,而不是像LinkedList<Integer>
那样。
我不知道如何制作可靠的基准。
答案 0 :(得分:1)
如果您的起点是,则只需将其替换为
LinkedList<Integer>
即可显着降低内存消耗,如When to use LinkedList over ArrayList?中所述。由于盒装整数是小对象,并且在装入相同值时甚至会重用其中一些,因此this answer的图形具有重要性。
如果您想让它更简单,只需使用ArrayList<Integer>
即可。如果您需要可以逐步填充的内容,Stream API确实有一个选项。使用IntStream.builder()
获取IntStream.Builder
,您可以重复添加新的int[]
值。一旦它包含所有值,您可以在其上调用int
以获取包含所有值的build().toArray()
数组,或者您可以直接对int[]
返回的IntStream
执行过滤和聚合操作(如果你可以将聚合操作表示为减少)。