Я попытался реализовать итеративный алгоритм с использованием диапазона. Он работал хорошо, поэтому я попытался сделать его параллельным, используя метод par, и он выбрал java.lang.OutOfMemoryError: Java heap space. Я обнаружил, что ParRange выделяет много памяти в конструкторе. Это правильное поведение ParRange? Я ожидал бы, что он ведет себя аналогично Range и выделяет данные только в том случае, если они необходимы.Scala ParRange потребление памяти
Вы можете легко воспроизвести его:
scala> collection.parallel.immutable.ParRange(1, 50000000, 1, true) java.lang.OutOfMemoryError: Java heap space