對象池

COM+ 對象池服務可以減少從頭創建每個對象的系統開銷。

基本介紹

  • 中文名:對象池
  • 外文名:Object pool
  • 減少:從頭創建每個對象的系統開銷
  • 創建:在同一執行緒上進行
  • 實施:最小值和最大值
簡介,創建,注意,

簡介

對象池中包含若干提前準備好的若干實例,當需要時從對象池中提取,當不需要時,則重新放入對象池。
一方面,使用對象池不需要頻繁的產生和銷毀實例對象,另一方面,對象池中的實例如果不夠程式調用才會繼續產生實例,這大大節省了性能。
例如,FPS遊戲中的敵人、子彈等都可以使用對象池。

創建

使用連線池時,創建在同一執行緒上進行,因此如果池中沒有連線,則代表您創建連線。採用對象池時,池可以決定創建新對象。但是,如果已經達到最大數量,它會給您下一個可用的對象。當需要花費較長時間來創建對象時,這的確是一個重要的行為。但不要長期使用這種方法來創建對象。
最小值和最大值的實施
不在連線池中實施。對象池的最大值在嘗試縮放應用程式時很重要。可能需要僅為幾個對象而復用成千上萬個請求。(TPC/C 基準依賴這一功能。)
COM+ 對象池與 .NET Framework 託管 SQL 客戶端連線池幾乎完全相同。例如,創建在不同的執行緒上進行,並強制實施最小值和最大值。

注意

應用程式域會影響對象池的行為。在 Microsoft Windows 2000 中,當應用程式激活設定為 Library 並且您有多個應用程式域時,將在默認應用程式域中創建所有緩衝池對象,並在多個客戶端之間共享。在同樣的情況下,當使用 Microsoft Windows XP 和 Windows Server 2003 時,每個應用程式域都有一個對象池。無論使用哪一種作業系統,當有多個應用程式域,且應用程式激活設定為伺服器時,進程外客戶端將使用默認應用程式域中的對象池。

相關詞條

熱門詞條

聯絡我們