cách các đối tượng trực tiếp được tìm ra trong bộ sưu tập thế hệ trẻ?
Mô tả cấp cao về cách bộ sưu tập thế hệ được triển khai trong HotSpot có thể được tìm thấy trong this article.
Nói chung một nhà sưu tập thế hệ đánh dấu thế hệ trẻ như sau (giả sử chúng tôi chỉ có hai thế hệ):
- Nó đánh dấu đối tượng trẻ và dấu vết tài liệu tham khảo bắt đầu với khung stack chủ đề và khung tĩnh. Khi nó tìm thấy một tham chiếu đến một đối tượng thế hệ cũ nó bỏ qua nó.
- Sau đó, nó lặp lại quá trình tham chiếu trong thế hệ cũ tham chiếu đến các đối tượng thế hệ trẻ. Bit khó hiểu là xác định các tham chiếu này trong thế hệ cũ mà không cần đánh dấu toàn bộ thế hệ cũ.
- Bây giờ chúng tôi đã đánh dấu tất cả các đối tượng trong thế hệ mới có thể truy cập được ... và phần còn lại (trong thế hệ đó) có thể được khai hoang.
Trong HotSpot, các đối tượng thế hệ cũ có chứa tham chiếu thế hệ trẻ được xác định bằng cách sử dụng "Bảng thẻ". Thế hệ cũ được chia thành các khu vực 512 byte, và mỗi khu vực có một "Thẻ". Nếu khu vực chứa bất kỳ cũ -> con trỏ thế hệ mới, một chút trong thẻ được thiết lập. Các đối tượng ở các vùng có tập bit thẻ sẽ được truy tìm trong bộ sưu tập thế hệ mới.
Điều khó khăn là duy trì bảng Thẻ dưới dạng tham chiếu không gian mới được ghi vào đối tượng thế hệ cũ. Trong HotSpot, điều này được thực hiện bằng cách sử dụng phần mềm ghi-rào cản đặt bit bẩn của Thẻ phù hợp bất cứ khi nào một tham chiếu không gian mới được ghi vào vùng bộ nhớ tương ứng với Thẻ. Khi bài viết được liên kết ghi chú, điều này làm cho việc thiết lập một trường tham chiếu trong một đối tượng đắt hơn, nhưng nó dường như đáng giá do thời gian được lưu lại bằng cách chỉ có thể thu thập các thế hệ mới hầu hết thời gian.
Nguồn
2010-10-03 08:09:40
Liên kết tốt, cảm ơn. – gkuzmin
Một chút sửa lỗi kỹ thuật: bảng thẻ được cập nhật * vô điều kiện *, bất kể con trỏ mới có đề cập đến Thế hệ Mới hay không. Về cơ bản, ngữ nghĩa là một * cờ bẩn *. Ngoài ra, mặc dù một mục trong bảng thẻ là một byte đầy đủ, nó chỉ giữ một chút thông tin. Điều này là vì lợi ích của hiệu suất. –
Thật vậy! http://psy-lob-saw.blogspot.com.au/2014/10/the-jvm-write-barrier-card-marking.html –