gpt4 book ai didi

emacs - Emacs Lisp 的 lexical-let 何时会泄漏内存?

转载 作者:行者123 更新时间:2023-12-02 01:50:16 24 4
gpt4 key购买 nike

我读到了有关 lexical-let 内存泄漏的信息,例如这里: Are there any problems with lexical-let or other cl-macros??? - Users list for the GNU Emacs text editor - ArchiveOrange

它说:

"Note that variables bound with lexical-let are never released, even if they are never used. Try

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

and watch it eat memory."

但我认为这段代码消耗内存只是因为循环创建的列表增长了。因此,我编写了一些 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

最佳答案

我刚刚在 emacs-devel 中找到了这个:

When does Emacs Lisp's lexical-let leak memory? So... Is it true, that "variables bound with lexical-let are never released, even if they are never used"?

据我所知。当然,这段代码并不是没有错误,但我不知道 遇到此类错误的任何具体案例。

--Re: lexical-let cause memory leaks?

关于emacs - Emacs Lisp 的 lexical-let 何时会泄漏内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9062580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com