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 (由alexisport提交)
...