Scala流及其内存使用

据了解,Stream保留最近评估的元素.我想它不保留所有评估的元素(这是不可行的),所以它可能使用一些内部的“缓存”.

这是对的吗?我可以控制这个缓存的大小和策略吗?

解决方法

流像列表,根据需要生成其成员.一旦生成元素,它将保留在流中并重新使用.

例如:

lazy val naturals: Stream[Int] = Stream.cons(0,naturals.map{_ + 1})

会给你一个自然数字的流.如果我打电话

naturals(5)

它将生成元素0-5并返回5,如果我然后调用

naturals(8)

它将重新使用前6个元素并再生成3个元素.

如果您关心内存使用情况,您可以使用Stream.drop(num)来生成一个新的流,并从头开始删除num元素,从而允许使用旧流垃圾收集截断的元素.例如:

naturals(5) //returns 5
val truncated = naturals.drop(4)
truncated(5) //returns 9

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...