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