“สวัสดี อามีโก้!”

"เฮ้ เอลลี คุณมีอะไรน่าสนใจจะบอกฉันไหม"

"วันนี้เราจะพูดถึงระยะเวลาที่วัตถุอยู่ในหน่วยความจำ หรือที่เรียกว่าอายุการใช้งานของวัตถุหลังจากสร้างวัตถุแล้ว วัตถุนั้นจะคงอยู่ (มีชีวิต) ตราบใดที่ตัวแปรอย่างน้อยหนึ่งตัวจัดเก็บที่อยู่ของมัน (มีอย่างน้อยหนึ่งตัว อ้างอิงถึงมัน)หากไม่มีการอ้างอิงอีก วัตถุจะตาย นี่คือตัวอย่างบางส่วน:"

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

"วัตถุ Tommy มีอยู่เพียงบรรทัดเดียวจากการสร้าง ตัวแปรเดียวที่อ้างถึงวัตถุถูกตั้งค่าเป็น null ในบรรทัดถัดไป ดังนั้นวัตถุจึงถูกทำลายโดย Java Virtual Machine (JVM)"

"วัตถุ Sammy ถูกจัดเก็บไว้ใน ตัวแปร cat1หลังจากสร้างขึ้น หรือพูดให้ถูกคือ ตัวแปรจัดเก็บการอ้างอิงถึงตัวแปรนั้น สองสามบรรทัดต่อมา การอ้างอิงนี้จะถูกคัดลอกไปยังcat2จากนั้นการอ้างอิงไปยังวัตถุอื่นจะถูกบันทึกไว้ในcat1ตอนนี้มีเพียงcat2 เท่านั้น ที่อ้างอิงถึงSammyสุดท้าย การอ้างอิงสุดท้ายที่เหลืออยู่ไปยังอ็อบเจกต์จะถูกตั้งค่าเป็น null ในบรรทัดสุดท้ายของเมธอดหลัก"

"วัตถุ Missy มีอยู่เพียงหนึ่งบรรทัดหลังจากสร้าง ในบรรทัดถัดไป ตัวแปร cat2ถูกตั้งค่าเป็นค่าอื่น และการอ้างอิงถึงMissyหายไป ไม่สามารถเข้าถึงวัตถุได้อีกต่อไป ดังนั้นจึงถือว่าเป็นขยะโดย ระบบ (เช่นวัตถุนั้นตายแล้ว)"

"เมื่อสร้างแล้ว Ginger object จะอยู่จนกว่าเมธอดจะสิ้นสุด เมื่อสิ้นสุดเมธอด ตัวแปร cat2จะถูกทำลาย โดยที่ Ginger จะถูกทำลายทันทีหลังจากนั้น"

"ฉันเห็น."

"แต่หากเราสร้าง วัตถุ Catภายในเมธอดและจัดเก็บการอ้างอิงถึงมันในตัวแปรอินสแตนซ์ วัตถุ Catก็จะคงอยู่ตราบเท่าที่มันถูกอ้างอิงโดยวัตถุอื่นที่ยังมีชีวิตอยู่"

"อันที่จริงแล้ว ออบเจ็กต์มักจะไม่ถูกทำลายทันทีโดยระบบ Java Virtual Machine ดำเนินการ 'รวบรวมขยะ' เป็นครั้งคราว โดยทำลายออบเจ็กต์ที่ถูกทำเครื่องหมายให้ลบ ข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการนั้นในภายหลัง"

"และหากเราไม่ต้องการให้ตัวแปรอ้างอิงวัตถุอีกต่อไป เราสามารถตั้งค่าเป็น nullหรือกำหนดให้ตัวแปรอ้างอิงถึงวัตถุอื่น"