Я читал о lexical-let утечке памяти, например здесь: Есть ли проблемы с лексико-let или другими cl-макросами??? - Список пользователей для текстового редактора GNU Emacs - ArchiveOrange
В нем говорится:
"Обратите внимание, что переменные, связанные с лексико-let, никогда не выпускаются, даже если они никогда не используются. Попробуйте
(loop for i from 1 to 100000 collect (lexical-let ((x i)) '()))
и наблюдайте, как он ел память.
Но я думаю, что этот код ест память только потому, что список, созданный циклом, растет. Итак, я написал несколько кодов elisp, чтобы проверить, когда это произойдет, но я не смог найти пример утечки.
Это то, как память растет со временем, когда я выполняю код ниже.
(require 'cl)
(defvar num-loop-1 30)
(defvar num-loop-2 100000)
(loop for i from 1 to num-loop-1 do
(loop for j from 1 to num-loop-2 collect
(lexical-let ((x `(,i ,j))) (lambda () x))))
Похоже, утечки нет.
Подробнее здесь: https://gist.github.com/1703325
ДОБАВЛЕНО: так выглядит первый пример памяти. Как я уже сказал, я думаю, что это артефакт.