2024 Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面了解如何操作的相关信息。

0
core.async

当一个let绑定在阻塞操作中使用时,该绑定会从let中泄漏出来。

`
(async/go-loop [])

(let [msg (async/<! in-ch)]
  (if msg
    (let [stuff (vec (range 1 100000))]
      (async/<! out-ch stuff)
      (println stuff)
      (recur))
    (recur))))

`

The {{stuff}}绑定会陷入状态机的状态。这将在{{recur}}之间持续,直到再次遇到绑定。

(在我们的情况下,那时已经积累了几GB。)

理想情况下,当变量超出作用域时,应将代表本地变量的状态字段置为null。

2 个答案

0

评论者:leonoel

相关:ASYNC-219

0
参考:https://clojure.atlassian.net/browse/ASYNC-223 (由 alex+import 报告)
...