“嗨,阿米戈!”

“嘿,艾莉。你有什麼有趣的事情要告訴我嗎?”

“今天我們要講的是一個對像在內存中停留的時間,也就是對象的生命週期。一個對象創建後,只要至少有一個變量在存儲它的地址,它就會存在(存活)(至少有一個引用它)。如果沒有更多的引用,對象就死了。這裡有一些例子:”

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 虛擬機 (JVM) 銷毀。”

“Sammy 對像在創建後存儲在cat1變量中。或者,更準確地說,該變量存儲對其的引用。幾行之後,該引用被複製到cat2。然後對另一個對象的引用被保存到cat1。現在,只有cat2引用Sammy。最後,在 main 方法的最後一行中,對該對象的最後一個剩餘引用設置為 null。”

“Missy 對像在創建後僅存在一行。在下一行中,cat2變量被設置為另一個值,並且對Missy 的引用丟失。該對象無法再訪問,因此被認為是垃圾系統(即對像已死)。”

“一旦創建,Ginger 對象就一直存在,直到方法結束。在方法結束時,cat2變量被銷毀,之後 Ginger 被立即銷毀。”

“我懂了。”

“但是如果我們在一個方法中創建一個Cat對象並將對它的引用存儲在一個實例變量中,那麼只要它被另一個仍然存在的對象引用,Cat對象就會存在。”

“實際上,對象通常不會立即被系統銷毀。Java 虛擬機不時執行“垃圾收集”,銷毀已標記為刪除的對象。稍後將詳細介紹該過程。”

“而且,如果我們不再需要一個變量來引用一個對象,我們可以將它設置為 null,或者為它分配一個對另一個對象的引用。”