REPLのSBCLガベージコレクタの次の動作に多少なりとも戸惑います。私は何ももう元の配列を参照していないことを期待するSBCLのREPLのメモリリーク
(add-one (test-gc))
を実行し
(defun test-gc()
(let ((x (make-array 50000000)))
(elt x 0)))
(defun add-one (x) (+ 1 x))
:二つの機能を定義します。しかし、(部屋の)報告書によると、記憶は解放されない。私は(テスト-GC)を実行した場合、直接、その後、いくつかの参照はSLIMEや
(list * ** ***)
のどこかに立ち往生されている可能性が、理解していたが、ここでの場合であるのでしょうか?ありがとう、アンドレイ。
更新しばらく前に私はバグを提出しました。最近確認された。参照してください: https://bugs.launchpad.net/sbcl/+bug/936304
この質問をSBCLメーリングリスト –
で聞いて、返信のフォローアップを投稿してください。ところで、なぜ問題のタイトルに「クロージャー」がありますか?私は質問のコードにクロージャーが表示されません。 –
CLISPで同じコードを試しましたが問題はありません。 gitバージョンのSBCLにはまだこの問題があるので、バグレポート(https://bugs.launchpad.net/sbcl/+bug/936304)を提出しました。クロージャーの発言についてはクロージャーがありません:) – Andrei