物件大概來看應該有建立階段,使用階段和銷毀階段。
建立物件的方法有顯式建立和隱式建立兩種。
1.顯式建立:
(1)new
(2)反射
(3)轉殖
(4)反序列化
2.隱式建立:比如當乙個類被載入後就會在堆區建立乙個class物件,這是程式設計師所不知道的。
1.可觸及狀態:被建立後的狀態。
2.可復活狀態:沒有引用變數引用該物件時。
3.不可觸及物件:被垃圾**的時候。
在物件進入可復活狀態後,垃圾**之前,會呼叫finalize()方法,當然這只是理想狀態,有可能不會呼叫,因此finalize()方法存在很多的不確定性,一般不使用finalize();
垃圾**執行緒是乙個優先順序很低的執行緒,因此有時候永遠都輪不到垃圾**,比如當呼叫了system.gc()時,程式只是建議催促垃圾**執行緒**垃圾,而垃圾**執行緒來不來**是不確定的。
1.強引用:垃圾**器永遠不會**他。
2.軟引用:如果記憶體夠,則不**他,如果記憶體不夠,則會**他。softreference
3.弱引用:不管記憶體夠不夠,只要垃圾**器掃瞄到他,則**他。weakreference
4.虛引用:可有可無,任何時候都可以被**。phantomreference
實施篇 領域物件的生命週期
面臨的挑戰 1.在整個生命週期中維護完整性 2.防止模型陷入管理生命週期複雜性造成的困境當中。聚合,對外暴露乙個entity,卻維護一組entity的一致性?工廠,儲存庫?在具有複雜關聯的模型中,要想保證物件更改的一致性是很困難的。不僅互不關聯的物件需要遵守一些固守規則,而且緊密關聯的各族物件也要遵...
生命週期篇 一 Activity生命週期理解
乙個activity 通俗點就叫乙個介面吧 在實際使用中會有幾種狀態 1.正在顯示 處於當前螢幕最頂層 2.尚且可見,但不可用 在其他介面下面,但未被完全覆蓋 3.完全不可見 被其他介面完全覆蓋,最常見的就是切換到桌面 以上是實際使用android手機的時候最直觀的介面狀態,那麼接下來我們來 一下,...
物件的生命週期
全域性物件的引用 雖然在c 不允許,但是cil的確允許分配全域性物件 靜態物件 靜態欄位的引用 應用程式的 庫的區域性物件的引用 傳遞進乙個方法的物件引數的引用 等待被終結的物件的引用 任何引用物件的cpu暫存器 要尋找不可達的物件,如果clr逐個檢查託管堆的沒乙個物件,很明顯,效率很低。每個物件都...