Я читал о лексической утечке памяти, например, здесь:
Есть ли какие-либо проблемы с лексическим разрешением или другими макросами 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
ДОБАВЛЕНО: Вот как первый пример пожирает память. Как я уже сказал, я думаю, что это артефакт.