【发布时间】:2012-02-18 16:25:56
【问题描述】:
我对 REPL 中 SBCL 垃圾收集器的以下行为感到有些困惑。定义两个函数:
(defun test-gc ()
(let ((x (make-array 50000000)))
(elt x 0)))
(defun add-one (x) (+ 1 x))
然后运行
(add-one (test-gc))
我希望不再引用原始数组。然而,正如(房间)报告的那样,内存没有被释放。我会理解,如果我直接运行 (test-gc),那么某些引用可能会卡在 SLIME 或
(list * ** ***)
但是这里是这样的吗?谢谢,安德烈。
更新 前段时间我提交了一个错误。最近得到了证实。看: https://bugs.launchpad.net/sbcl/+bug/936304
【问题讨论】:
-
您可能想在 SBCL 邮件列表中提出这个问题
-
... 并且可能会在此处发布他们回复的后续内容。顺便说一句,为什么问题标题中有“关闭”?我在问题的代码中没有看到任何闭包。
-
我在 CLISP 中尝试过相同的代码,没有问题。 SBCL的git版本还是有这个问题,所以我提交了一个bug报告:(bugs.launchpad.net/sbcl/+bug/936304)。关于关闭备注,没有关闭:)
-
正如我在该错误报告中提到的,该错误仍然存在,尽管标记为已关闭。我也报告了类似的bugs.launchpad.net/sbcl/+bug/1009267。开发人员似乎对这些问题非常不感兴趣(而且令人不安),尽管在我看来这是一个重大问题。
标签: memory-leaks common-lisp sbcl