Meh*_*dad 10 lisp garbage-collection memory-management newlisp
这个页面对我来说很困惑.
它说:
newLISP中的内存管理不依赖于垃圾收集算法.内存未标记或引用计数.相反,在创建内存对象之后立即决定是否删除新创建的内存对象.
newLISP遵循一个仅参考(ORO)规则.一旦newLISP在表达式评估期间达到更高的评估级别,则符号未引用的每个内存对象都将过时.newLISP中的对象(不包括符号和上下文)通过值复制传递给其他用户定义的函数.因此,每个newLISP对象只需要一个引用.
再往下看,我看到:
所有列表,数组和字符串都通过引用传入和传出内置函数.
我无法理解这两个.
newLISP如何"不依赖于垃圾收集算法",而是通过引用传递内容?
例如,在循环引用的情况下它会做什么?!
是否有可能 LISP不使用垃圾收集,而不会使性能下降?(我假设您总是可以按价值传递信息,或者您可以随时执行全堆扫描,但是在我看来这样会严重损害您的性能.)
如果是这样,它会怎样?处理循环引用?如果没有,他们是什么意思?
小智 12
也许阅读http://www.newlisp.org/ExpressionEvaluation.html有助于更好地理解http://www.newlisp.org/MemoryManagement.html论文.关于循环引用:它们在newLISP中不存在,没有办法创建它们.性能问题在该内存管理文件的子章节中讨论,并在此处:http://www.newlisp.org/benchmarks/
可能正在尝试使用newLISP - 即尝试创建循环引用 - 将清除大部分问题.