2008-10-20 31 views
6

Tôi đang viết một chương trình có chứa một bộ thu gom rác thế hệ. Chỉ có hai thế hệ. Điều tôi tự hỏi là: Khi làm một bộ sưu tập đầy đủ, tôi có thể đạt được bất kỳ thứ gì (hiệu suất khôn ngoan) bằng cách thu thập những vật thể trẻ tuổi, quảng bá những người sống sót cho thế hệ cũ, và sau đó thu thập thế hệ cũ, hay tôi chỉ thu gom rác một lần quét? Tôi không chắc cách nào mọi người thường làm.Bạn có nên thu thập thế hệ trẻ đầu tiên trong bộ sưu tập rác đầy đủ không?

Tôi đang sử dụng phương pháp hai bước ngay bây giờ, vì nó đơn giản hơn một chút để triển khai, nhưng có lẽ phương pháp một bước sẽ hiệu quả hơn?

Bộ thu gom rác không được sao chép, nếu điều đó quan trọng.

Trả lời

5

Tùy thuộc vào tần suất bạn quảng bá người sống sót. Nếu bạn quảng cáo thường xuyên, thì có vẻ như bạn sẽ làm tốt hơn rất nhiều bằng cách thực hiện GC trong một lần quét. Nếu không, thì có vẻ như chúng sẽ khá giống nhau.

Dù bằng cách nào, có vẻ như bạn làm một chút công việc dư thừa bằng cách thực hiện nó theo hai giai đoạn. Ví dụ, bất cứ ai được thăng chức được vốn đã kiểm tra hai lần (một lần là trẻ và một lần nữa là cũ). Một lần nữa, nếu điều này không xảy ra quá thường xuyên, tôi sẽ gắn bó với phương pháp hai bước đơn giản hơn (vì bạn đã có nó hoạt động và có rất ít để đạt được).

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