Nếu bạn tạo danh sách được liên kết kép của riêng mình và bạn đưa vào danh sách được liên kết kép này Thùng chứa (chứa các mục từ danh sách của bạn); chỉ những thùng chứa đó được liên kết với nhau.
Vì vậy, trong danh sách của bạn, bạn sẽ có đối tượng A chứa trong A '. A 'được liên kết với B' và B 'là một container chứa B vv Và không có đối tượng nào phải tham chiếu đến một đối tượng khác.
Trong trường hợp bình thường, các vùng chứa đó sẽ không có sẵn từ bên ngoài (chỉ nội dung thú vị); do đó chỉ danh sách của bạn sẽ có tham chiếu đến vùng chứa của bạn (hãy nhớ rằng nội dung của bạn không biết về vùng chứa của mình).
Nếu bạn loại bỏ tham chiếu cuối cùng vào danh sách của bạn (danh sách, không phải thùng chứa hay nội dung) GC sẽ cố gắng thu thập nội dung danh sách của bạn, phù thủy là đồ chứa và nội dung của bạn.
Vì vùng chứa của bạn không có sẵn bên ngoài tham chiếu duy nhất mà chúng có là nhau và danh sách chính. Tất cả được gọi là hòn đảo cách ly. Liên quan đến nội dung, nếu họ vẫn có tài liệu tham khảo trong ứng dụng của bạn, họ sẽ tồn tại GC, nếu không họ sẽ không.
Vì vậy, khi bạn xóa danh sách của mình chỉ A 'và B' sẽ bị xóa vì ngay cả khi chúng vẫn có tham chiếu, những tham chiếu đó là một phần của một hòn đảo. Nếu A và B không còn tham chiếu nữa thì chúng cũng sẽ bị xóa.
Nguồn
2010-08-17 20:00:39
bản sao có thể có của [Trình thu gom rác Java xử lý tự tham khảo như thế nào?] (Http://stackoverflow.com/questions/407855/how-does-java-garbage-collector-handle-self-reference) –
cũng xem : [Tham khảo thông tư trong Java] (http://stackoverflow.com/questions/176745/circular-references-in-java) –