2012-01-30 77 views
12

我讀到詞彙-LET的內存泄漏,例如這裏: Are there any problems with lexical-let or other cl-macros??? - Users list for the GNU Emacs text editor - ArchiveOrange什麼時候Emacs Lisp的詞彙泄漏內存?

它說:

「請注意,對於詞彙-LET綁定變量從未公佈,甚至 如果從來沒有使用過他們試試

(loop for i from 1 to 100000 collect (lexical-let ((x i)) '())) 

看着它吃了回憶。

但我認爲這個代碼吃內存只是因爲循環制成的列表增長。 因此,我寫了幾個elisp代碼來檢查它何時發生,但我找不到泄漏的例子。

這就是當我執行下面的代碼時內存隨着時間增長的方式。

lambda-in-let.el

(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

新增:這是第一個例子,如何吃內存。正如我所說,我認爲這是一個神器。

lambda-in-let.el

+0

FWIW是在'求助GNU-emacs'線程原始存檔頁面,沒有廣告:http://lists.gnu.org/archive/html/help- gnu-emacs/2010-12/msg00141.html – 2012-01-30 10:58:16

+2

[emacs devel](http://news.gmane.org/gmane.emacs.devel)對於這類問題比SO – Tom 2012-01-30 19:26:48

+0

更適合此外#emacs channel在Freenode可能是問這樣一個問題的好地方。 – vpit3833 2012-01-31 02:26:30

回答