Please enable JavaScript.
Coggle requires JavaScript to display documents.
Chapter 02: The Simple Heap Model - Coggle Diagram
Chapter 02: The Simple Heap Model
Small Object Heap
Phân bổ và thu gom rác tự động trên Small Object Heap (SOH) khá quy trình phức tạp.
Hầu hết các đối tượng được phân bổ trong một ứng dụng nhỏ hơn 85 K, SOH là một khu vực lưu trữ được sử dụng khá nhiều.
Để tối đa hóa hiệu suất, tối ưu hóa đã được thêm vào, thay vào đó làm tăng thêm sự phức tạp.
Large Object Heap
Các đối tượng trên LOH không bị nén, vì chi phí sao chép nhiều bộ nhớ lớn
Khi đầy (Thế hệ 2) GC diễn ra, các dải địa chỉ của bất kỳ đối tượng LOH nào không được sử dụng đều được ghi lại trong một bảng phân bổ "dung lượng trống".
Nếu bất kỳ đối tượng liền kề nào là không có gốc, thì chúng được ghi lại là một mục nhập trong phạm vi địa chỉ kết hợp.
Phần nhỏ bộ nhớ hầu như sẽ luôn luôn bị bỏ lại giữa các đối tượng, dẫn đến phân mảnh
Generational garbage collection
Gen 1 collection
Thế hệ này chứa các đối tượng tồn tại trong thời gian ngắn và đóng vai trò như một bộ đệm giữa các đối tượng tồn tại trong thời gian ngắn và đối tượng tồn tại lâu dài.
Sau khi trình thu gom tác thực hiện thu gom rác ở thế hệ 0, nó sẽ nén bộ nhớ các đối tượng có thể truy cập và chuyển chúng sang thế hệ 1.
Nếu việc thu gom rác ở thế hệ 0 không lấy đủ bộ nhớ để ứng dụng tạo một đối tượng mới, bộ thu gom rác có thể thực hiện thu gom rác ở thế hệ 1, sau đó thế hệ 2.
Các đối tượng trong thế hệ 1 tồn tại sau khi thực hiện thu gom rác sẽ được thăng cấp lên thế hệ 2.
Gen 2 collection
Thế hệ này chứa các đối tượng tồn tại lâu dài. Ví dụ như một đối tượng có chứa dữ liệu tĩnh là một đối tượng tồn tại trong suốt tiến trình
Các đối tượng ở thế hệ 2 tồn tại cho đến khi chúng được xác định là không thế truy cập được.
Các đối tượng trên heap đối tượng lớn cũng được thu dom rác trong thế hệ 2.
Gen 0 collection
Đây là thế hệ trẻ nhất và chứa các vật thể tồn tại trong thời gian ngắn.
Các đối tượng mới được cấp phát tạo thành một thế hệ đối tượng mới và mặc nhiên là các tập hợp thế hệ 0.
Hầu hết các đối tượng được lấy lại để thu gom rac trong thế hệ 0 và không tồn tại cho thế hệ tiếp theo.
Nếu một ứng dụng cố gắng tạo một đối tượng mới khi thế hệ 0 đã đầy, trình gom rác sẽ thực hiện thu gom rác nhằm giải phóng không gian địa chỉ cho đối tượng.
Trình thu gom rác bắt đầu bằng cách kiểm tra các đối tượng trong thế hệ 0 thay vì tất cả các đối tượng trong heap được quản lý. Chỉ cần thực hiện thu gom rác của thế hệ 0 thường sẽ lấy lại đủ bộ nhớ để cho phép ứng dụng tiếp tục tạo các đối tượng mới.
Finalization
Phương thức finalize chỉ được gọi bởi bộ thu gom rác khi tham chiếu đến một đối tượng không được sử dụng thêm.
Phương thức này được gọi ngay trước khi hủy đối tượng.
Phương thức này được thực hiện với sự trợ giúp của hàm hủy.
Phương pháp finalize có thể giảm thiểu hiệu suất của chương trình vì nó không giải phóng bộ nhớ ngay lập tức.