簡體   English   中英

Clojure的lazy-seq緩存

[英]Clojure's lazy-seq caching

Practical Clojure中 ,作者提到一旦計算了一個懶惰的seq值,它就會被緩存。

如果我們從一個懶惰-SEQ得到一個非常大的數量的值,我們可能會看到內存外的錯誤? 或者是否有一種機制來防止這種情況(例如,刪除較舊的緩存值以便為新的緩存值騰出空間)?

懶惰序列中的已實現元素可以像Clojure中的任何其他對象一樣進行垃圾收集,但有一個重要的警告。 你不應該持有對序列頭部的引用。 這被稱為“抱頭”。

具體而言,使用doall來評估整個序列,或者將參考(例如在原子或def )存儲到惰性序列中,同時用map遍歷它們都保持頭部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM