我對REPL中的SBCL垃圾收集器的以下行爲感到有些莫名其妙。定義兩個功能:SBCL的REPL中的內存泄漏
(defun test-gc()
(let ((x (make-array 50000000)))
(elt x 0)))
(defun add-one (x) (+ 1 x))
然後運行
(add-one (test-gc))
我希望沒什麼引用原始數組了。然而,作爲(空間)報告,內存不會被釋放。我會明白,如果我跑(測試-GC)直接,那麼一些參考可能已經在某處泥或
(list * ** ***)
卡住了,是這裏的情況?謝謝,安德烈。
更新前段時間我提出了一個錯誤。最近證實。參見: https://bugs.launchpad.net/sbcl/+bug/936304
您可能想在SBCL郵件列表 – 2012-02-18 21:42:34
上提出這個問題......並且可能會在此發佈後續回覆。順便說一句,爲什麼在問題的標題中「關閉」?我沒有看到問題代碼中的任何關閉。 – 2012-02-19 13:25:51
我試過CLISP中的相同代碼,沒有問題。 SBCL的git版本仍然存在這個問題,所以我提交了一個錯誤報告:(https://bugs.launchpad.net/sbcl/+bug/936304)。關於結束語,沒有結束:) – Andrei 2012-02-19 15:52:34