Tôi tự hỏi các tham chiếu yếu hoạt động như thế nào trong nội bộ, ví dụ trong .NET hoặc Java. Hai ý tưởng chung của tôi là:Các tham chiếu yếu được triển khai như thế nào?
- "xâm nhập" - để thêm danh sách tham chiếu yếu vào lớp cao nhất (lớp đối tượng). Sau đó, khi một đối tượng bị phá hủy, tất cả các tham chiếu yếu có thể được lặp lại và được đặt thành null.
- "Không xâm nhập" - để duy trì một số chỉ mục của các đối tượng trong danh sách tham chiếu yếu. Khi một tham chiếu yếu A được tạo thành đối tượng B, sẽ có một mục nhập có thể thay đổi hoặc được tạo, khóa có thể là con trỏ đến B.
- "Bẩn" - để lưu trữ giá trị băm đặc biệt với từng đối tượng , sẽ bị xóa khi đối tượng bị hủy. Các tham chiếu yếu sẽ sao chép giá trị băm đó và so sánh nó với giá trị của đối tượng để kiểm tra xem đối tượng có còn sống hay không. Tuy nhiên, điều này sẽ gây ra lỗi vi phạm truy cập, khi được sử dụng trực tiếp, vì vậy sẽ cần phải có một đối tượng bổ sung với giá trị băm đó, tôi nghĩ vậy.
Một trong các giải pháp này có vẻ sạch sẽ và không hiệu quả. Có ai biết làm thế nào nó thực sự được thực hiện?
Tìm thấy: http://java.sun.com/j2se/1.5.0/source_license.html –
Mới nhất tại đây: http://download.java.net/openjdk/jdk7/ –