English 中文(简体)
我怎么能在Clojure内存泄漏?
原标题:
  • 时间:2009-04-15 00:48:01
  •  标签:

演讲在湾区Clojure Meetup周四我编译方法的列表在Clojure内存泄漏。

到目前为止我有:

  • hold onto the head of an infinite sequence
  • creating lots of generic classes by calling lambda in a loop (is this still a problem)
  • holding a reference to unused data
  • ...

还有什么?

最佳回答

通过保持大量seq的引用。例如:

(drop 999990 (vec (range 1000000))) 

返回一个seq十整个向量元素包含一个参考!

问题回答

另一个显而易见的方法是使用任何Java库,泄漏内存。(例如:< a href = " http://www.mail-archive.com/qt-jambi-interest@trolltech.com/msg00592.html " rel = " nofollow noreferrer " > Qt占碑< / >)

λ,读< a href = " http://groups.google.com/group/clojure/browse_thread/thread/2c66650b9057f760/11a09103da821264?lnk = gst&q = permgen # 11 a09103da821264 nofollow noreferrer“rel = > < / >和< a href = " http://groups.google.com/group/clojure/browse_thread/thread/67f9d2df248d3aa0/5b67be8c1cce16cd?lnk = gst&q = permgen # 5 b67be8c1cce16cd nofollow noreferrer“rel = > < / >和< a href = " http://groups.google.com/group/clojure/browse_thread/thread/d99b1c3c06c1429f/1fc286078a717d26?lnk = gst&q = permgen nofollow noreferrer“rel = > < / >。我认为这是固定在Clojure的最新版本。

有实习生调用。

注意你的例子没有内存泄露的常识。你仍然可以访问对象(不确定这类——我假设他们可以重新找到一个通过一些API),即他们还没被丢失。与某些诸如字符串的类和拘留只是无法忘记所以的数据效果是一样的。

Clojure内存泄漏通常会非常类似于Java内存泄漏。然而这一事实集合是“持续”意味着如果你添加一些收集和不知道你保留旧版本的引用的集合以及新值意味着内存消耗旧版本闲逛。





相关问题
热门标签