根據伺服對象的狀態把它們進行分類後,現在基於內存管理來定義Corba對象的分類。顯然,這個討論和伺服對象的生命周期密切相關。這裡側重於分類,所以只是簡單地討論一下內存管理問題,並在下面引入一通用管理模式。
1. 靜態Corba對象
靜態對象是在系統整個生命時期中存在的Corba對象。通常,這些對象是組件入口點例如, Corba命名服務必須提供一根命名上下文,用來創建新的命名層次。這個根命名上下文可歸類為靜態的,因為它始終存在。從內存管理的角度來看,靜態對象的實現是很簡單的。通常,靜態對象可通過在服務器主線中實例化伺服對象來實現,並把它直接綁定到相關的Corba對象(即早期綁定)。
2. 瞬態Corba對象
瞬態Corba對象並不和任何持久的狀態相關聯-它確實是瞬態的。通常,瞬態Corba對象綁定到有狀態伺服對象,即對象的狀態僅由伺服對象包含。不幸的是,這意味著瞬態Corba對象的生命周期緊密綁定到伺服對象的生命周期:瞬態Corba對象的創建必然導致伺服對象的立即激活,以實現對象。另一方面,伺服對象的銷毀會立即導致相關Corba對象的刪除,因為所有的狀態都隨著伺服對象而消失。
瞬態對象的一個恰當例子是迭代器,它使用戶能反復查看查詢的結果集合。迭代器對象並不和任何持久的狀態綁定,因為查詢結果通常是瞬態的。為瞬態Corba對象找出好的內存管理策略會是很困難的。
3. 持久Corba對象
最後,持久Corba對象和其他持久狀態相關聯,並由數據管理系統來維護。這使用戶可以為這些對象的實現應用十分靈活的內存管理策略,因為我們可以使用後期綁定來動態激活和凍結伺服對象。
4. 伺服對象池模式
對Corba對象實現的分類,說明了從內存管理的角度來看,不同的對象有不同的需求。伺服對象池模式為伺服對象管理定義了一個通用的框架。它的基本思想是包含一個池管理器,來管理激活伺服對象所在的池。每個伺服對象和一驅逐策略相關聯。該策略描述了伺服對象何時被逐出。池管理器有兩個角色:保持器和驅逐器。保持器保證對象在需要時存在。例如,瞬態對象不能重新創建,所以它必須保持到客戶機對它的請求完成。驅逐器必須保證伺服對象是經常被逐出的,以避免不必要的資源消耗。