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

欢迎!有关如何使用本站的信息,请参阅 关于 页面。

0
core.async

将通道串联在一起似乎在 Safari 中会造成内存泄漏。

如下所示

(def test [input-chan] (map< identity (map< identity (map< identity input-chan)))))

当使用通道时将导致内存泄漏。链条越长,内存泄漏越严重。

我已创建了一个示例仓库和示例页面。

仓库和示例代码在此
https://github.com/bhauman/checkmemleak/blob/master/src/checking_safari_leak/core.cljs

演示页面在此
此链接将造成泄漏
http://rigsomelight.com/checkmemleak/?leak=true
此链接不会
http://rigsomelight.com/checkmemleak

泄漏非常严重。

5 答案

0

评论者:bhauman

我刚刚确认这也存在问题,在 Safari 版本 7.0.1 (9537.73.11) 的 Mavericks 上。

0

评论者:bhauman

我已更新示例页面。

http://rigsomelight.com/checkmemleak/index.html

此链接不会泄漏
http://rigsomelight.com/checkmemleak/index.html#comp-partial

此链接将造成泄漏
http://rigsomelight.com/checkmemleak/index.html#map<

存在对不同实现和优化模式的导航尝试。

为了明确,map<-chain, custom-map, map<, 和 map> 在 :none 和 simple 优化模式下都表现出泄漏。

0

评论由:dnolen 撰写

为确保该工单包含所有必要信息 - 如果我记得没错,即使是高级优化也会受到影响?是这样的吗,布鲁斯?

0

评论者:bhauman

是的,它影响了高级优化。我尚未检查这还是否是一个问题。

0
参考: https://clojure.atlassian.net/browse/ASYNC-51 (由bhauman报告)
...