这个页面让我很困惑。
它说:
newLISP 中的内存管理不依赖于垃圾回收算法。内存没有标记或引用计数。相反,在创建内存对象后立即决定是否删除新创建的内存对象。
newLISP 遵循一个仅引用 (ORO) 规则。一旦 newLISP 在表达式评估期间达到更高的评估级别,每个未被符号引用的内存对象都将过时。newLISP 中的对象(不包括符号和上下文)通过值复制传递给其他用户定义的函数。因此,每个 newLISP 对象只需要一个引用。
再往下看,我看到:
所有列表、数组和字符串都通过引用传入和传出内置函数。
我无法理解这两个。
newLISP 怎么能“不依赖垃圾收集算法”,但通过引用传递东西?
例如,在循环引用的情况下它会做什么?!
LISP甚至有可能不使用垃圾收集,而不会使性能下降吗?(我假设您始终可以按值传递事物,或者您始终可以在您认为可能有必要时执行全堆扫描,但在我看来,这会严重损害您的性能。)
如果是这样,它会如何处理循环引用?如果不是,它们是什么意思?