【问题标题】:Does newLISP use garbage collection?newLISP 是否使用垃圾收集?
【发布时间】:2012-06-25 13:00:35
【问题描述】:

This page 让我很困惑。

上面写着:

newLISP 中的内存管理不依赖于垃圾回收算法。内存没有标记或引用计数。相反,是否删除新创建的内存对象是在创建内存对象后立即做出的决定。

newLISP 遵循仅引用 (ORO) 规则。一旦 newLISP 在表达式评估期间达到更高的评估级别,每个未被符号引用的内存对象都是过时的。 newLISP 中的对象(不包括符号和上下文)通过值复制传递给其他用户定义的函数。因此,每个 newLISP 对象只需要一个引用。

再往下看:

所有列表、数组和字符串都通过引用传入和传出内置函数。

我无法理解这两个。

newLISP 如何“不依赖垃圾收集算法”,但通过引用传递事物?
例如,在循环引用的情况下它会做什么?!

LISP 是否可能不使用垃圾收集,而不会使性能下降? (我假设您始终可以按值传递事物,或者您始终可以在您认为可能有必要时执行全堆扫描,但在我看来,这会严重损害您的性能。)
如果是这样,它将如何处理循环引用?如果不是,它们是什么意思?

【问题讨论】:

    标签: memory-management garbage-collection lisp newlisp


    【解决方案1】:

    也许阅读http://www.newlisp.org/ExpressionEvaluation.html 有助于更好地理解http://www.newlisp.org/MemoryManagement.html 论文。关于循环引用:它们在 newLISP 中不存在,无法创建它们。性能问题在该内存管理论文的一个子章节中得到解决,这里是:http://www.newlisp.org/benchmarks/

    可能正在使用和试验 newLISP - 即尝试创建循环引用 - 将解决大部分问题。

    【讨论】:

    • 大吃一惊!所以不是所有的 LISP 都有循环引用?!没看到那个来了。 :) +1 绝对值得很多赞。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-02-11
    • 2011-01-26
    • 2021-05-25
    • 1970-01-01
    • 2011-03-10
    • 2012-12-20
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多