Trong java, rác (garbage) có nghĩa là các đối tượng không còn được tham chiếu nữa.
Bộ thu gom rác (Garbage Collection) trong java được sử dụng để thực hiện quá trình tự động khôi phục lại bộ nhớ không được sử dụng tại runtime một cách tự động. Nói cách khác, đó là một cách để phá hủy các đối tượng không sử dụng nữa.
Để làm như vậy, chúng ta đã sử dụng hàm free() trong ngôn ngữ C và delete() trong C ++. Nhưng, trong java nó được thực hiện tự động. Vì vậy, java cung cấp việc quản lý bộ nhớ tốt hơn.
Nội dung chính
Ưu điểm của Garbage Collection
- Nó làm cho việc sử dụng bộ nhớ java hiệu quả bởi vì bộ thu gom rác (Garbage Collection) loại bỏ các đối tượng không được tham chiếu từ bộ nhớ heap.
- Nó được được thực hiện tự động bởi trình thu gom rác (một phần của JVM) vì vậy chúng ta không cần phải nỗ lực nhiều để giải phóng bộ nhớ.
Làm thế nào có thể một đối tượng không được tham chiếu?
Có vài cách như sau:
- Bởi gán giá trị null.
- Bởi việc gán đối tượng đến một tham chiếu khác;
- Bởi một đối tượng annonymous.
1)Bởi gán giá trị null
Employee e=new Employee(); e=null;
2)Bởi việc gán đối tượng đến một tham chiếu khác
Employee e1=new Employee(); Employee e2=new Employee(); e1=e2;
3)Bởi một đối tượng annonymous
new Employee();
Phương thức finalize()
Phương thức finalize() được gọi mỗi lần trước khi đối tượng được thu gom rác. Phương thức này có thể được sử dụng để thực hiện xử lý dọn dẹp. Phương thức này được định nghĩa trong lớp Object như sau:
protected void finalize(){}
Phương thức gc()
Phương thức gc () được sử dụng để gọi bộ thu gom rác để thực hiện quá trình dọn dẹp. Phương thức gc() được cài đặt trong các lớp System và Runtime.
Ví dụ về garbage collection trong java
public class TestGarbage1 { public void finalize() { System.out.println("object is garbage collected"); } public static void main(String args[]) { TestGarbage1 s1 = new TestGarbage1(); TestGarbage1 s2 = new TestGarbage1(); s1 = null; s2 = null; System.gc(); } }
Output:
object is garbage collected object is garbage collected