共用方式為


COM+ 應用程式回收概念

應用程式回收可以大幅提升 COM+ 應用程式的整體穩定性,方法是針對已知問題提供快速修正,並協助防範非預期的問題。 例如,應用程式效能可能會因為記憶體流失、無法調整的資源使用量和進程失敗等問題而降低。 COM+ 提供應用程式回收作為這些問題的解決方案。 您可以使用應用程式回收來自動關閉進程並重新啟動它,從而重新初始化失敗的進程,並重新配置它所使用的記憶體。

應用程式回收的運作方式是建立與應用程式相關聯的 Dllhost 進程複本。 這個重複的 Dllhost 會處理所有未來的物件要求,這會讓舊的 Dllhost 完成其餘物件要求的維護。 當偵測到程式中物件的所有外部參考釋放,或到達到期逾時值時,就會關閉舊的 Dllhost 進程。 透過此行為,應用程式回收可確保用戶端應用程式不會發生服務中斷。

注意

您無法回收已設定為以 Windows 服務身分執行的 COM+ 應用程式。 此外,連結庫應用程式具有其主機進程的回收和共用屬性。

 

您可以使用元件服務系統管理工具,或透過 COM+ 管理員 istrative SDK 以程式設計方式設定應用程式回收。 您可以根據下列 COM 管理員 CatalogObject 物件在 Applications 集合中的下列屬性,根據數個準則來回收程式:

  • RecycleLifetimeLimit。 進程在回收之前可以執行的最大分鐘數。 有效範圍是 0 到 30,240 分鐘(21 天)。 默認的分鐘數為 0,表示進程不會從達到存留期限制中回收。
  • RecycleMemoryLimit。 回收進程之前,進程記憶體使用量上限(以 KB 為單位)。 如果進程記憶體使用量超過指定的數目超過一分鐘,就會回收進程。 有效範圍是 0 到 1,048,576 KB。 默認的記憶體使用量為 0 KB,表示進程不會從達到記憶體限制中回收。
  • RecycleCallLimit。 應用程式物件在回收程式之前可以接受的呼叫數目上限。 有效範圍是 0 到 1,048,576 個呼叫。 默認的呼叫數目為 0,表示進程不會從達到呼叫限制中回收。
  • RecycleActivationLimit。 回收程式之前要接受的應用程式對象啟用數目上限。 有效範圍是 0 到 1,048,576 個啟用。 啟用的預設數目為 0,表示進程不會回收達到啟用限制。

此外,COM 管理員 CatalogObject 物件的 RecycleExpirationTimeout 屬性是用來強制關閉回收程式的。 它表示在強制關閉進程之前,等待回收程式中物件的所有外部參考釋放的分鐘數。 有效範圍是 1 到 1440 分鐘(24 小時),預設到期時間為 15 分鐘。 只有在已判斷進程會根據其他準則回收時,才會使用此值。

您可以選取多個準則來回收應用程式。 COM+ 會在滿足第一組準則之後回收應用程式。 您可以設定到期逾時值,以判斷舊 Dllhost 程式在強制關閉之前,可以花費多少時間完成剩餘的服務要求。

ApplicationInstances 集合提供 HasRecycled 屬性,其提供一種方式來判斷應用程式是否已回收。

COM+ 應用程式回收工作

RecycleSurrogate