複製鏈接
請複製以下鏈接發送給好友

對象池

鎖定
COM+ 對象池服務可以減少從頭創建每個對象的系統開銷。
中文名
對象池
外文名
Object pool
減    少
從頭創建每個對象的系統開銷
創    建
在同一線程上進行
實    施
最小值和最大值

目錄

對象池簡介

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

對象池創建

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

對象池注意

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