CORBA物件生命週期之實現和記憶體管理

azz發表於2007-08-24
CORBA物件生命週期之實現和記憶體管理[@more@]
  根據伺服物件的狀態把它們進行分類後,現在基於記憶體管理來定義Corba物件的分類。顯然,這個討論和伺服物件的生命週期密切相關。這裡側重於分類,所以只是簡單地討論一下記憶體管理問題,並在下面引入一通用管理模式。

  1. 靜態Corba物件

  靜態物件是在系統整個生命時期中存在的Corba物件。通常,這些物件是元件入口點例如, Corba命名服務必須提供一根命名上下文,用來建立新的命名層次。這個根命名上下文可歸類為靜態的,因為它始終存在。從記憶體管理的角度來看,靜態物件的實現是很簡單的。通常,靜態物件可透過在伺服器主線中例項化伺服物件來實現,並把它直接繫結到相關的Corba物件(即早期繫結)。

  2. 瞬態Corba物件

  瞬態Corba物件並不和任何持久的狀態相關聯-它確實是瞬態的。通常,瞬態Corba物件繫結到有狀態伺服物件,即物件的狀態僅由伺服物件包含。不幸的是,這意味著瞬態Corba物件的生命週期緊密繫結到伺服物件的生命週期:瞬態Corba物件的建立必然導致伺服物件的立即啟用,以實現物件。另一方面,伺服物件的銷燬會立即導致相關Corba物件的刪除,因為所有的狀態都隨著伺服物件而消失。

  瞬態物件的一個恰當例子是迭代器,它使使用者能反覆檢視查詢的結果集合。迭代器物件並不和任何持久的狀態繫結,因為查詢結果通常是瞬態的。為瞬態Corba物件找出好的記憶體管理策略會是很困難的。

  3. 持久Corba物件

  最後,持久Corba物件和其他持久狀態相關聯,並由資料管理系統來維護。這使使用者可以為這些物件的實現應用十分靈活的記憶體管理策略,因為我們可以使用後期繫結來動態啟用和凍結伺服物件。

  4. 伺服物件池模式

  對Corba物件實現的分類,說明了從記憶體管理的角度來看,不同的物件有不同的需求。伺服物件池模式為伺服物件管理定義了一個通用的框架。它的基本思想是包含一個池管理器,來管理啟用伺服物件所在的池。每個伺服物件和一驅逐策略相關聯。該策略描述了伺服物件何時被逐出。池管理器有兩個角色:保持器和驅逐器。保持器保證物件在需要時存在。例如,瞬態物件不能重新建立,所以它必須保持到客戶機對它的請求完成。驅逐器必須保證伺服物件是經常被逐出的,以避免不必要的資源消耗。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10901326/viewspace-965663/,如需轉載,請註明出處,否則將追究法律責任。

相關文章