"Chào, Amigo!"

"Này, Ellie. Bạn có điều gì thú vị muốn nói với tôi không?"

"Hôm nay chúng ta sẽ nói về thời gian một đối tượng lưu lại trong bộ nhớ, còn được gọi là thời gian tồn tại của đối tượng. Sau khi một đối tượng được tạo, nó tồn tại (sống) miễn là có ít nhất một biến đang lưu trữ địa chỉ của nó (có ít nhất một tham chiếu đến nó). Nếu không còn tham chiếu nào nữa, đối tượng sẽ chết. Dưới đây là một số ví dụ:"

public class MainClass
{
   public static void main (String[] args)
   {TommyCat cat = new Cat("Tommy");
    ┃ cat = null;
    ┗
    ┏ SammyCat cat1 = new Cat("Sammy");
    ┃┏ Missy
    ┃┃Cat cat2 = new Cat("Missy");
    ┃┃cat2 = cat1;
    ┃┗
    ┃┏ Ginger
    ┃┃cat1 = new Cat("Ginger");
    ┃┃cat2 = null;
    ┃┗
    ┗
   }
}

"Đối tượng Tommy chỉ tồn tại trong một dòng kể từ khi tạo ra nó. Biến duy nhất tham chiếu đến đối tượng được đặt thành null ở dòng tiếp theo, vì vậy đối tượng bị Máy ảo Java (JVM) hủy."

"Đối tượng Sammy được lưu trữ trong biến cat1 sau khi nó được tạo. Hay chính xác hơn, biến lưu trữ tham chiếu đến nó. Một vài dòng sau, tham chiếu này được sao chép sang cat2 . Sau đó, tham chiếu đến đối tượng khác được lưu vào cat1 . Bây giờ, chỉ cat2 tham chiếu Sammy . Cuối cùng, tham chiếu cuối cùng còn lại cho đối tượng được đặt thành null ở dòng cuối cùng của phương thức chính."

"Đối tượng Missy chỉ tồn tại trong một dòng sau khi nó được tạo. Trong dòng tiếp theo, biến cat2 được đặt thành một giá trị khác và tham chiếu đến Missy bị mất. Không thể truy cập đối tượng nữa, do đó, nó bị coi là rác bởi hệ thống (tức là đối tượng đã chết)."

"Sau khi được tạo, đối tượng Ginger tồn tại cho đến khi phương thức kết thúc. Khi kết thúc phương thức, biến cat2 bị hủy, với Ginger bị hủy ngay sau đó."

"Tôi hiểu rồi."

"Nhưng nếu chúng ta tạo một đối tượng Cat bên trong một phương thức và lưu trữ một tham chiếu đến nó trong một biến thể hiện, thì đối tượng Cat sẽ tồn tại miễn là nó được tham chiếu bởi một đối tượng khác vẫn còn tồn tại."

"Trên thực tế, một đối tượng thường không bị hệ thống hủy ngay lập tức. Máy ảo Java thỉnh thoảng thực hiện 'thu gom rác', hủy các đối tượng đã được đánh dấu để xóa. Thông tin thêm về quy trình đó sau."

"Và, nếu chúng ta không còn muốn một biến tham chiếu đến một đối tượng, chúng ta có thể đặt nó thành null hoặc gán cho nó một tham chiếu đến một đối tượng khác."