2012-06-25 33 views
10

This page đã khá khó hiểu đối với tôi.NewLISP có sử dụng bộ sưu tập rác không?

Nó nói:

Quản lý bộ nhớ trong newLISP không dựa trên một thuật toán thu gom rác thải. Bộ nhớ không được đánh dấu hoặc tính tham chiếu. Thay vào đó, quyết định xóa một đối tượng bộ nhớ mới được tạo có được thực hiện ngay sau khi đối tượng bộ nhớ được tạo ra hay không.

newLISP tuân thủ quy tắc chỉ một tham chiếu (ORO). Mỗi đối tượng bộ nhớ không được tham chiếu bởi một biểu tượng đã lỗi thời khi newLISP đạt đến một mức đánh giá cao hơn trong quá trình đánh giá biểu thức. Các đối tượng trong newLISP (không bao gồm các ký hiệu và ngữ cảnh) được chuyển qua bản sao giá trị cho các hàm do người dùng định nghĩa khác. Kết quả là, mỗi đối tượng newLISP chỉ yêu cầu một tham chiếu.

Tiếp tục xuống, tôi thấy:

Tất cả danh sách, mảng và chuỗi được truyền vào và ra khỏi chức năng built-in bằng cách tham khảo.

Tôi không thể hiểu được hai điều này.

Làm cách nào newLISP "không dựa vào thuật toán thu thập rác", nhưng vẫn chuyển mọi thứ bằng tham chiếu?
Ví dụ, nó sẽ làm gì trong trường hợp tham chiếu vòng tròn ?!

Thậm chí có phải có thể để LISP không sử dụng thu gom rác thải mà không làm giảm hiệu suất thoát nước không? (Tôi cho rằng bạn luôn có thể vượt qua mọi thứ theo giá trị hoặc bạn luôn có thể thực hiện quét toàn bộ bất cứ khi nào bạn nghĩ nó có thể cần thiết, nhưng sau đó có vẻ như tôi sẽ làm tổn thương hiệu suất của bạn.)
Nếu có, làm thế nào nó sẽ đối phó với tài liệu tham khảo vòng tròn? Nếu không, ý của chúng là gì?

Trả lời

12

Có lẽ đọc http://www.newlisp.org/ExpressionEvaluation.html giúp hiểu rõ hơn về giấy http://www.newlisp.org/MemoryManagement.html. Về tham chiếu vòng tròn: chúng không tồn tại trong newLISP, không có cách nào để tạo chúng. Câu hỏi về hiệu suất được giải quyết trong một chương phụ của giấy quản lý bộ nhớ đó và tại đây: http://www.newlisp.org/benchmarks/

Có thể làm việc và thử nghiệm với NEWLISP - tức là cố tạo tham chiếu vòng tròn - sẽ xóa hầu hết các câu hỏi.

+0

Tâm thổi! Vậy không phải tất cả các LISP đều có tham chiếu vòng tròn sao ?! Không thấy cái đó đến. :) +1 chắc chắn xứng đáng có rất nhiều upvotes. Cảm ơn! – Mehrdad

Các vấn đề liên quan