周四在湾区Clojure聚会上的演讲我正在编制一份在Clojure中泄漏记忆的方法清单。
到目前为止,我有:
还有什么?
答案 0 :(得分:9)
通过在大型集合上保留对seq的引用。例如:
(drop 999990 (vec (range 1000000)))
返回包含对整个向量的引用的十个元素的序列!
答案 1 :(得分:3)
答案 2 :(得分:2)
也有实习生电话。
请注意,您的示例不会在常识中泄漏内存。您仍然可以访问对象(不确定类 - 我假设可以通过某些API重新找到它们),即它们没有丢失。对于像类和实习字符串这样的某些东西,忘记数据是不可能的,所以效果是一样的。
答案 3 :(得分:0)
Clojure内存泄漏通常与Java内存泄漏非常相似。但是,集合是“持久的”这一事实意味着,如果您将某些内容添加到集合中并且没有意识到您保留了对旧版本集合的引用以及新值意味着使用内存来保留旧内容版本徘徊。