Why are Java Streams once-off? - Stack Overflow
(stackoverflow.com)
8 則討論
IngramChen
張貼於
做成 one-off 比較好啊,在 Scala Stream 是 lazy memorization collection ,我們最近一個月就踩到了兩次問題,造成 OutOfMemoryError
val stream = (1 to 10000).toStream
.map(id => dao.find(id)) // 1
.flatMap(_.getOptionalInt) // 2
.filter(_ < 10) // 3
.foldLeft(0)((ret, a) => ret + a)
這看起來是把一萬個 object ,取出其中的一個 Int 參數,過濾掉小於 10 的數值,再一個個取出來相加,並不會造成太大的的計憶體負擔,但實際上卻生成了 1, 2, 3 個各有一萬個 object 的 Stream
一不小心,就丟 OutOfMemoryError 了