小编Aar*_*ron的帖子

File.lines() 并行流的内存使用情况

我正在使用 Files.lines() 从大文件(8GB+)读取行。如果按顺序处理,它会很好地工作,并且内存占用非常低。一旦我将parallel()添加到流中,它似乎就会永远挂在它正在处理的数据上,最终导致内存不足异常。我相信这是 Spliterator 在尝试拆分时缓存数据的结果,但我不确定。我剩下的唯一想法是编写一个带有 trySplit 方法的自定义 Spliterator,该方法剥离少量数据进行拆分,而不是尝试将文件拆分为一半或更多。有人遇到过这种情况么?

java-8 java-stream

3
推荐指数
1
解决办法
2451
查看次数

ParallelStream for Files

Java 8中的新Stream API非常好用,特别是对于并行处理功能.但是,我没有看到如何在Collections parallelStream方法之外应用并行处理.

例如,如果我从文件创建一个Stream,我使用以下内容:

Stream<String> lines = Files.lines(Paths.get("test.csv"));
Run Code Online (Sandbox Code Playgroud)

但是,没有对应的parallelStream方法,就像在Collections中一样.看起来可能有一个线程抓住下一行,而可能有几个线程解析和处理这些行.

这可以通过StreamSupport.stream()来完成吗?

java java-8

0
推荐指数
1
解决办法
657
查看次数

标签 统计

java-8 ×2

java ×1

java-stream ×1