内存分配原始流与原始类型表

时间:2017-07-06 12:47:29

标签: java java-stream

我的问题:我正在从数据库中为JFreeChart下载大量数据。我想在不使用原始表的情况下优化数据内存使用。

使用集合需要使用对象。 我想知道我是否可以使用像IntStream这样的原始流来优化内存使用,而不是像LinkedList<Integer>那样。

我不知道如何制作可靠的基准。

1 个答案:

答案 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执行过滤和聚合操作(如果你可以将聚合操作表示为减少)。