java - Clojure - 消耗的惰性序列元素是否保留在内存中?

标签 java clojure

我的应用程序逐行处理一个可能很大的文本文件,我的代码目前是:

(with-open [r (clojure.java.io/reader "large_text_file")]
  (doall
    (map #(process %) (line-seq r)))

在我的代码中,已经处理过的行会保留在内存中吗?如果是这样,我该如何避免?

一般情况下,消耗的惰性序列元素是否保留在内存中?

谢谢!

最佳答案

这取决于:正常的 GC 规则适用,如讨论的那样 elsewhere on StackOverflow in great detail .

因此,请确保您只在元素流经时引用元素,而不是保持序列的头部,这样您应该做得很好。

关于java - Clojure - 消耗的惰性序列元素是否保留在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10958254/

相关文章:

java - spring-data-jpa 是否有二级缓存实现?

clojure - 让 Leiningen 和 Cygwin 工作

java - 斯卡拉-Java =? (或 Clojure - Java =?)

clojure - 为什么在此示例中使用 reducer 没有显着加速?

jdbc - clojure.java.jdbc/延迟查询大结果集

java - 即使启动了持久性单元实体,JPA Spring 注入(inject) EntityManager 也为 null

java - 用于java的斯坦福nlp api : how to get the name as full not in parts

java - JLabel 文本未出现

java - 我的算法在解决复杂问题时遇到了麻烦

clojure - 可重用的 ClojureScript 库