Trong khi thu thập bộ nhớ thế hệ trẻ, bộ thu JVM chỉ quét các đối tượng gốc đó (truy nhập trực tiếp từ bộ gốc) thuộc về thế hệ trẻ và cũng sử dụng ghi hàng rào được hỗ trợ thẻ bảng/nhớ đặt để xác định khu vực của thế hệ cũ mà có thể có thể chứa các đối tượng có chứa tài liệu tham khảo cho các đối tượng trong thế hệ trẻ.Thu thập rác JVM - truy tìm các đối tượng trực tiếp trong thế hệ trẻ
Câu hỏi mà tôi có là nếu người thu trẻ xác định rằng một đối tượng cụ thể trong thế hệ trẻ chỉ có một tham chiếu bên ngoài từ một đối tượng trong thế hệ cũ, . không rác và do đó làm cho các đối tượng thế hệ trẻ 'sống' và không đủ điều kiện để thu thập? Ví dụ, có thể có một đường dẫn từ gốc đặt trực tiếp đến đối tượng này trong thế hệ cũ mà lần lượt có một tham chiếu đến đối tượng thế hệ trẻ đã nói. Nhà sưu tập trẻ thường xem xét đối tượng thế hệ trẻ này là sống hay làm thế nào để xác định liệu đối tượng thế hệ cũ trỏ đến nó là trực tiếp/rác trước khi quyết định bỏ qua/thu thập nó?
Cảm ơn bạn đã trả lời - Tôi ít quan tâm đến bộ sưu tập của đối tượng thế hệ cũ nhưng sự sống còn/bộ sưu tập của đối tượng thế hệ trẻ trong một GC trẻ. Vì vậy, nếu tôi hiểu chính xác từ những gì bạn nói, nếu chúng ta có một đối tượng thế hệ trẻ chỉ có một tham chiếu đến từ một đối tượng thế hệ cũ mà chính nó là rác, vật thể thế hệ trẻ này (là rác) sống sót sau các GC trẻ và chỉ được thu thập trong GC trẻ đầu tiên xảy ra sau khi GC chính thu thập đối tượng thế hệ cũ đã nói. – Stormshadow
Sự hiểu biết của tôi có đúng không? – Stormshadow
Về cơ bản có. Tôi nghĩ rằng thế hệ "Đầy đủ" liên quan đến một bộ sưu tập của cả không gian trẻ và cũ cùng một lúc, bởi vì "tại sao không" và cũng bởi vì bạn cũng cần phải đánh dấu từ rễ và thông qua các đối tượng trong thế hệ trẻ để tìm tất cả đối tượng thế hệ cũ. Vì vậy, bạn có thể chỉ đơn giản là nó để "những đối tượng sẽ không được thu thập cho đến khi gc đầy đủ tiếp theo". @Stormshadow – BeeOnRope