newLisp --- One reference only, (ORO) memory management

One reference only, (ORO) memory management

単一参照、(ORO)メモリ管理

Memory management in newLISP does not rely on a garbage collection algorithm. Memory is not marked or reference-counted. Instead, a decision whether to delete a newly created memory object is made right after the memory object is created.

newLISPのメモリ管理はガベージコレクションアルゴリズムに頼っていません。
代わりに、新しく生成されたメモリオブジェクトを削除するかどうかの決定はメモリオブジェクトが生成された直後に作られます。

Empirical studies of LISP have shown that most LISP cells are not shared and so can be reclaimed during the evaluation process. Aside from some optimizations for primitives like set, define, and eval, newLISP deletes memory objects containing intermediate evaluation results once it reaches a higher evaluation level. newLISP does this by pushing a reference to each created memory object onto a result stack. When newLISP reaches a higher evaluation level, it removes the last evaluation result's reference from the result stack and deletes the evaluation result's memory object. This should not be confused with one-bit reference counting. ORO memory management does not set bits to mark objects as sticky.

経験に基づいたLISPの研究はほとんどのLISPセルは共有されずそして評価のプロセスの間に回収することができることを示しました。
セット、定義、そして評価のようなプリミティブのためのいくつかの最適化を除いて、newLISPはより高い評価レベルに達するならば中間評価結果を含むメモリオブジェクトを削除します。
newLISPは生成された各メモリオブジェクトへの参照を結果スタックの上にプッシュすることによって、これを行います。
newLISPがより高い評価レベルに達したとき、それは最後の評価の結果の結果スタックの参照を削除して評価結果のメモリオブジェクトを削除します。
これは1ビット参照カウントと混同してはいけません。
OROメモリ管理は付箋のようにオブジェクトへのマークのためのビットをセットしません。

newLISP follows a one reference only (ORO) rule. Every memory object not referenced by a symbol or context reference is obsolete once newLISP reaches a higher evaluation level during expression evaluation. Objects in newLISP (excluding symbols and contexts) are passed by value to other functions. As a result, each newLISP object only requires one reference.

newLISPは単一参照(ORO)規則に従います。
シンボルまたは文脈の参照によって参照されない全てのメモリオブジェクトは式の評価の間により高い評価レベルに達するならばもう使用されていません。
newLISPの(シンボルと文脈を除いた)オブジェクトは他の関数への値によって通過させられます。
結果として、各newLISPのオブジェクトはただ1つの参照を必要とします。

newLISP's ORO rule has advantages. It simplifies not only memory management but also other aspects of the newLISP language. For example, while users of traditional LISP have to distinguish between equality of copied memory objects and equality of references to memory objects, newLISP users do not.

newLISPのORO規則は長所を持ちます。
それはメモリ管理だけではなくnewLISP言語の他の面も単純化します。
例えば、古典的LISPのユーザーコピーされたメモリオブジェクトとメモリオブジェクトの参照の等価性を区別しなければなりませんが、newLISPのユーザーはそうしません。

newLISP's ORO rule forces newLISP to constantly allocate and then free LISP cells. newLISP optimizes this process by allocating large chunks of cell memory from the host operating system. newLISP will request LISP cells from a free cell list and then recycle those cells back into that list. As a result, only a few CPU instructions (pointer assignments) are needed to unlink a free cell or to re-insert a deleted cell.

newLISPのORO規則はnewLISPに絶え間なくLISPセルを割り当てて開放することを強制します。
newLISPはこのホストオペレーティングシステムからセルメモリの巨大なチャンク割り当てによってこのプロセスを最適化します。
newLISPは未使用のセルリストからLISPセルを要求して、それらのセルをそのリストへ戻しリサイクルするでしょう。
結果として、たった少しのCPU命令(ポインタ割り当て)がフリーセルから外すためや削除されたセルを再挿入するために必要とされます。

The overall effect of ORO memory management is a faster evaluation time and a smaller memory and disk footprint than traditional interpreted LISP's can offer. The lack of garbage collection in newLISP more than compensates for its high frequency of cell creation/deletion. Note that under error conditions, newLISP will employ a mark and sweep algorithm to free un-referenced cells.

OROメモリ管理の全体的な影響は古典的なインタプリタLISPが提供することができるより評価時間がより早くメモリとディスク使用量がより小さいです。
newLISPのガベージコレクションの欠如はセル生成/削除の高頻度のそれを補って余りあります。
エラー状況下で、newLISPはマークアンドスウィープアルゴリズムを非参照セルの開放に採用するでしょう。


>> Automatic Memory Management in newLISP
>> Traditional automatic memory management (Garbage Collection)
>> One reference only, (ORO) memory management
>> Performance considerations with value-passing
>> Memory and datatypes in newLISP
>> Implementing ORO memory management

0 件のコメント: