tkf*_*tkf 12 emacs memory-leaks elisp
我读到了lexical-let的内存泄漏,比如这里: lexical-let或其他cl-macros有什么问题吗? - GNU Emacs文本编辑器的用户列表 - ArchiveOrange
它说:
"请注意,与lexical-let绑定的变量永远不会被释放,即使它们从未被使用过.请尝试
Run Code Online (Sandbox Code Playgroud)(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))))
Run Code Online (Sandbox Code Playgroud)
看起来没有泄漏.
请在此处查看更多示例:https: //gist.github.com/1703325
ADDED:这是第一个例子吃内存的方式.正如我所说,我认为这是一件神器.

我刚刚在emacs-devel中找到了这个:
Emacs Lisp 的 lexical-let 何时会泄漏内存? 那么...“用 lexical-let 绑定的变量永远不会被释放,即使它们从未被使用”,这是真的吗?
我不知道。当然,这段代码并非没有错误,但我不知道有任何具体案例会遇到这样的错误。