Czytałem o wycieku pamięci leksykalno-Powiedzmy, na przykład tutaj: Are there any problems with lexical-let or other cl-macros??? - Users list for the GNU Emacs text editor - ArchiveOrangeKiedy pamięć wycieku leksykonu Emacsa Lispa?
Mówi:
„Zauważ, że zmienne związane z leksykalnego-let nie są zwolnione, nawet jeśli są one nigdy używane Wypróbuj
i zobacz, jak je pamięć. "
Ale myślę, że ten kod zjada pamięć tylko dlatego, że lista tworzona przez pętlę rośnie. Napisałem kilka kodów, aby sprawdzić, kiedy to nastąpi, ale nie mogłem znaleźć przykładu wycieku.
W ten sposób rośnie pamięć z czasem, kiedy wykonuję poniższy kod.
(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))))
Wygląda na to, nie ma nieszczelności.
Zobacz więcej przykładów tutaj: https://gist.github.com/1703325
dodał: To jest jak pierwszy przykład zjada pamięć. Jak już powiedziałem, myślę, że to artefakt.
FWIW tutaj jest oryginalna strona archiwum do wątku na 'help-gnu-emacs', bez reklam: http://lists.gnu.org/archive/html/help- gnu-emacs/2010-12/msg00141.html –
[emacs devel] (http://news.gmane.org/gmane.emacs.devel) jest lepszym miejscem dla tego rodzaju pytań niż SO – Tom
Również kanał #emacs na Freenode może być dobrym miejscem do zadawania takich pytań. – vpit3833