Chương 4: Giới thiệu về lớp Mục tiêu bài học
4.6 Garbage Collection (GC) – Thu gom rác
Khi một đối tượng (Object) được tạo ra, nó được cấp phát vùng nhớ trong bộ nhớ. Vùng nhớ này được gọi là Heap. Các đối tượng trong Java được tạo ra bằng toán tử new và vùng nhớ của đối tượng được cấp phát trong Heap lúc thực thi. Khi đối tượng trên Heap khơng cịn được tham chiếu bởi chương trình, chúng trở nên thích hợp cho thành phần thu gom rác (Garbage Collection), và Java Heap được gọi là Garbage Collection Heap. Thuật ngữ “Garbage Collection” (Thu gom rác) hàm ý các đối tượng trong Java khi khơng cịn cần
thiết bởi chương trình, gọi là rác và có thể loại bỏ. Điều đó có nghĩa là vùng nhớ cấp phát cho các đối tượng sẽ được tái sử dụng cho đối tượng mới tiếp sau.
Java Virtual Machine sẽ xác định những đối tượng nào mà khơng cịn dùng nữa và sẽ thu hồi vùng nhớ bị chiếm dụng.
Bên cạnh việc giải phóng vùng nhớ của các đối tượng không được tham chiếu, Garbage Collector (bộ thu gom rác) còn giúp ngăn sự phân mãnh vùng nhớ heap. Sự phân mãnh heap xảy ra trong quá trình chương trình thực thi. Trong quá trình thực thi, các đối tượng được tạo ra và hủy bỏ khi không dùng đến nữa, do đó dẫn đến tình trạng có các block (khối) rỗng nằm giữa các block đang dùng. Khi yêu cầu vùng nhớ để cấp phát cho các đối tượng mới cần phải nới rộng kích thước của heap mặc dù vẫn còn đủ vùng nhớ trong heap để cấp phát. Vấn đề này thường hay xảy ra do khơng cịn đủ vùng nhớ liên tục trong heap để cấp phát.
Chương 4 Giới Thiệu về Lớp
59/114 Trong đặc tả JVM, chỉ vùng heap của JVM phải được thu gom rác. Nhưng không định nghĩa cách thức bộ thu gom rác (Garbage Collector) hoạt động, mà mỗi nhà phát triển JVM phải quyết định cách cài đặt.