Я читал об утечке памяти лексико-LET, например здесь: Are there any problems with lexical-let or other cl-macros??? - Users list for the GNU Emacs text editor - ArchiveOrangeКогда происходит лексико-утечка памяти Emacs Lisp?
Он говорит:
«Обратите внимание, что переменные, связанные с лексической пусть никогда не выпустили, даже , если они никогда не используются . Попробуйте
(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
ADDED: Это как первый пример ест память. Как я уже сказал, я думаю, что это артефакт.
FWIW здесь исходный архив страницы для потока на 'Справка-Гну-emacs', без рекламы: http://lists.gnu.org/archive/html/help- gnu-emacs/2010-12/msg00141.html –
[emacs devel] (http://news.gmane.org/gmane.emacs.devel) - лучшее место для такого вопроса, кроме SO – Tom
Также канал #emacs на Freenode может быть хорошим местом, чтобы задать вопрос такого рода. – vpit3833