【问题标题】:Can channel cause memory leak in clojure?通道会导致clojure中的内存泄漏吗?
【发布时间】:2020-04-12 07:50:48
【问题描述】:

如果不再将数据放入in 通道,下面的go 块会导致Clojure 中的内存泄漏吗?我需要想办法关闭频道吗?

(defn printer
  [in]
  (go (while true (println (<! in)))))

【问题讨论】:

标签: multithreading concurrency clojure channel


【解决方案1】:

鉴于此go 块无法结束,是的,它将继续使用系统中极少量的内存来跟踪它。但是,由于它是 go,它不会消耗线程。

【讨论】:

  • 我认为这不是真的。正如 glts 评论的评论,停放的 goroutines 只有在对它们停放的通道有一些引用时才会保留。如果通道被垃圾回收,因为没有人打算再次写入它,那么停放的操作也会如此。
猜你喜欢
  • 2021-03-23
  • 2021-09-25
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 2011-06-16
  • 2011-10-28
相关资源
最近更新 更多