Sau khi một đối tượng đã được sử dụng, nó sẽ được phân bổ từ bộ nhớ bằng cách sử dụng lớp Garbage Collector. Các đối tượng bị phá hủy dựa trên thực tế là không có tham chiếu đến đối tượng đó. Lớp Garbage Collector gọi hàm 'finalize' trên đối tượng cần được hủy.
Đảo biệt lập là gì?
Khi hai đối tượng ‘a’ và ‘b’ tham chiếu lẫn nhau và chúng không được tham chiếu bởi bất kỳ đối tượng nào khác, nó được gọi là đảo cô lập.
Nó là một nhóm các đối tượng tham chiếu lẫn nhau nhưng chúng không được tham chiếu mà là các đối tượng khác của các ứng dụng khác.
Lưu ý - Một đối tượng không được tham chiếu duy nhất cũng là một hòn đảo của sự cô lập.
Hãy để chúng tôi xem một ví dụ -
Ví dụ
public class Demo{ Demo i; public static void main(String[] args){ Demo my_ob_1 = new Demo(); System.out.println("Demo object one has been created"); Demo my_ob_2 = new Demo(); System.out.println("Demo object two has been created"); my_ob_1.i = my_ob_2; my_ob_2.i = my_ob_1; my_ob_1 = null; my_ob_2 = null; System.gc(); } @Override protected void finalize() throws Throwable{ System.out.println("The finalize method has been called on the object"); } }
Đầu ra
Demo object one has been created Demo object two has been created The finalize method has been called on the object The finalize method has been called on the object
Một lớp có tên Demo chứa chức năng chính. Tại đây, một biến kiểu lớp Demo được tạo. Một thể hiện của lớp Demo được tạo và đối tượng thứ hai được gán cho đối tượng Demo của đối tượng đầu tiên. Tương tự cũng được thực hiện theo cách ngược lại với dobject thứ hai. Bây giờ, cả hai đối tượng này đều được gán cho null và hàm ‘System.gc’ được gọi. Bây giờ, hàm 'finalize' bị ghi đè.