请在 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 和简单优化模式下表现出内存泄露。

0 投票

评论者:dnolen

为了确保这张票据包含所有必要的信息——如果我记得正确,即使是高级优化也受到影响吗?我正确吗,布鲁斯?

0 投票

评论者:bhauman

是的,它影响了高级优化。我还没检查这个问题是否仍然存在。

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