Thu gom rác là gì?
Garbage Collector là một chương trình tự động quản lý bộ nhớ trong đó việc phân bổ lại các đối tượng được xử lý bởi Java chứ không phải là lập trình viên. Trong ngôn ngữ lập trình Java, việc phân bổ động các đối tượng được thực hiện bằng cách sử dụng toán tử new . Một đối tượng một khi được tạo sử dụng một số bộ nhớ và bộ nhớ vẫn được phân bổ cho đến khi có các tham chiếu cho việc sử dụng đối tượng.
Khi không có tham chiếu đến một đối tượng, nó được coi là không còn cần thiết, và bộ nhớ, bị chiếm bởi đối tượng có thể được lấy lại. Không có nhu cầu rõ ràng để tiêu diệt một đối tượng vì Java tự động xử lý phân bổ lại.
Kỹ thuật thực hiện điều này được gọi là Garbage Collection. Các chương trình không phân bổ bộ nhớ cuối cùng có thể bị sập khi không còn bộ nhớ trong hệ thống để phân bổ. Các chương trình này được cho là có rò rỉ bộ nhớ.
Việc thu gom rác trong Java diễn ra tự động trong suốt vòng đời của chương trình, loại bỏ nhu cầu phân bổ lại bộ nhớ và do đó tránh rò rỉ bộ nhớ. Trong ngôn ngữ C, trách nhiệm của lập trình viên là phân bổ lại bộ nhớ được phân bổ động bằng cách sử dụng hàm free (). Đây là nơi quản lý bộ nhớ Java dẫn đầu.
Lưu ý: Tất cả các đối tượng được tạo trong Phần Heap của bộ nhớ. Thêm về điều này trong một hướng dẫn sau.
Ví dụ: Để tìm hiểu cơ chế thu gom rác trong Java
Bước 1) Sao chép mã sau vào editor.
class Student{
int a;
int b;
public void setData(int c,int d){
a=c;
b=d;
}
public void showData(){
System.out.println("Value of a = "+a);
System.out.println("Value of b = "+b);
}
public static void main(String args[]){
Student s1 = new Student();
Student s2 = new Student();
s1.setData(1,2);
s2.setData(3,4);
s1.showData();
s2.showData();
//Student s3;
//s3=s2;
//s3.showData();
//s2=null;
//s3.showData();
//s3=null;
//s3.showData();
}
Bước 2) Lưu, biên dịch và chạy mã. Như thể hiện trong sơ đồ, hai đối tượng và hai biến tham chiếu được tạo.
Bước 3) Dòng không ghi chú # 20,21,22. Lưu, biên dịch và chạy mã.
Bước 4) Như được hiển thị trong sơ đồ bên dưới, hai biến tham chiếu đang trỏ đến cùng một đối tượng.
Bước 5) Dòng không ghi chú # 23 & 24. Biên dịch, lưu và chạy mã
Bước 6) Như hiển thị trong sơ đồ bên dưới, s2 trở thành null, nhưng s3 vẫn trỏ đến đối tượng và không đủ điều kiện để thu thập rác java.
Bước 7) Dòng không ghi chú # 25 & 26. Lưu, biên dịch và chạy mã
Bước 8) Tại thời điểm này, không có tham chiếu nào trỏ đến đối tượng và trở thành đủ điều kiện để thu gom rác. Nó sẽ bị xóa khỏi bộ nhớ và không có cách nào lấy lại được.
Làm thế nào để xóa một đối tượng trong Java?
1) Nếu bạn muốn làm cho đối tượng của mình đủ điều kiện cho Bộ sưu tập rác, hãy gán biến tham chiếu của nó thành null.
2) Các loại nguyên thủy không phải là đối tượng. Họ không thể được chỉ định null.
إرسال تعليق