在解釋“對象的生命周期”前,先來看下麵這個例子: 有一個停車場共50個停車位,假如這個停車場是通過人工來管理停車位的使用情況,管理員有一個計數器,用來計錄當前空閑的停車位有多少個,每當有新的停車位被使用了計數器就減1,而有新的停車位空閑了計數器就加1。 我們可以把這些停車位理解為【資源空間】,可支配 ...
在解釋“對象的生命周期”前,先來看下麵這個例子:
有一個停車場共50個停車位,假如這個停車場是通過人工來管理停車位的使用情況,管理員有一個計數器,用來計錄當前空閑的停車位有多少個,每當有新的停車位被使用了計數器就減1,而有新的停車位空閑了計數器就加1。
我們可以把這些停車位理解為【資源空間】,可支配的最大資源數為50(即停車位數量),記錄資源使用情況的管理員可理解為資源的觀察者(每當資源發生變化就對停車位進行計數)。
那麼會存在有這樣的場景,50個停車位都被使用了,如果有新來的車,那麼就不允許進入停車場。這種場景可以理解為資源不足。
而電腦中的【記憶體】也跟【停車場】差不多,我們通常說的記憶體有4G、8G、16G等,那麼該記憶體最多能夠存儲的數據量就是4G、8G、16G等,如果當前記憶體使用情況已達到瓶頸的話,運行的程式就會出現故障。
當記憶體使用達到瓶頸時,運行的程式為什麼會出現故障?
因為電腦在運行一個程式的時候,會把要用到的數據先寫入記憶體空間。當記憶體不足時,程式就無法繼續對數據在記憶體上進行操作,此時就會導致程式故障。更具體的一些知識點,朋友們可以去查閱相關資料:程式是如何被電腦所執行的,本文不做討論研究,因為這個問題本身就有很多可討論的知識點。
上面解釋到,電腦在運行一個程式的時候,會把要用到的數據先寫入記憶體空間。這就相當於某些停車位被使用了(即資源空間被使用),而在記憶體中的表現就是占用了一塊記憶體空間。但是記憶體的空間大小是有限的,那麼在程式中什麼時候會占用記憶體空間?並且有沒有類似停車位的管理員一樣的角色,來觀察程式的相關使用情況呢?
先思考下程式中類的概念,雖然我們可以用“類”將生活中的各種事物進行抽象化來在程式中進行描述。但是“類”不能代表一個具體的東西,而這個具體的東西是以“對象”來表達,那麼我們要想在程式中得到這個具體的“對象”則是需要【創建類的實例】來獲取,這也就認證了前面文章所說的“類的具體實例就叫做對象”。那麼這個“創建類的實例”也就是一個具體的【對象】誕生了,此時會在記憶體中占用一塊空間。當這個具體的【對象】不再被使用後(相當於車離開了停車場,不需要使用停車位了),那麼在程式中會有一個叫GC(垃圾回收機制)的東西來負責管理對象使用情況,類似停車場的管理員,職責就是:觀察不再被使用的具體【對象】有哪些,然後將其銷毀,騰出記憶體空間。GC(垃圾回收機制)管理對象的使用情況的詳細說明本文暫不作討論。
那麼現在回到“生命周期”這個詞,對於人來說就是從出生到死亡的一個過程。
所以在程式中,一個“對象的生命周期”就是指:對象的創建到使用結束後被銷毀的一個過程。