This page對我來說一直很困惑。newLISP使用垃圾回收嗎?
它說:在newLISP
內存管理不依賴於一個垃圾收集算法。內存未標記或引用計數。而是在創建內存對象後立即決定是否刪除新創建的內存對象。
newLISP遵循一個僅供參考(ORO)規則。在表達式評估期間,一旦newLISP達到更高的評估級別,每個未被符號引用的內存對象就會過時。 newLISP中的對象(不包括符號和上下文)通過值複製傳遞給其他用戶定義的函數。因此,每個newLISP對象只需要一個引用。
再往下,我看到:
所有列表,數組和字符串進出的內置函數按引用傳遞。
我無法理解這兩者。
newLISP如何「不依靠垃圾收集算法」,而是通過引用傳遞事物?
例如,它將在循環引用的情況下做什麼?
是否即使可能爲LISP不使用垃圾回收,沒有使性能下降? (我認爲你總是可以通過價值來傳遞事物,或者你可以隨時執行全堆掃描,只要你認爲它可能是必要的,但在我看來,這樣會瘋狂地傷害你的表現。)
如果是這樣,如何它會處理循環引用嗎?如果不是,他們是什麼意思?
頭腦風暴!那麼不是所有的LISP都有循環引用?!沒有看到那個人來。 :) +1肯定值得大量upvotes。謝謝! – Mehrdad