我很好奇在AppDomain中的共享/靜態對象生命週期,其中RemotingCalls是創建共享對象的原因。客戶端激活對象在應用程序域中靜態對象的遠程處理壽命
我們正在使用遠程處理設置,它使用客戶端激活的對象,我們只使用函數來訪問服務器。遠程對象被設置爲單例。
服務器設置一個通道並使用RemotingConfiguration.Configure加載配置文件。
其中一些服務器功能在服務器上觸及並使用一些靜態(在vb.net中共享)變量。我找不到這些靜態變量的生命週期是什麼,它們在第一次被觸及時被創建(靜態構造函數正在運行)。使用日誌記錄我看不到對象處置/最終發生。
連接到遠程處理服務器後等待幾分鐘,可以看到共享對象仍然活着。
問題:
那麼,什麼是在這個遠程設置靜態對象的預期生存時間。它們的壽命是否與AppDomain一樣長,或者當Remoting對象交換時它們是否會被循環使用。如果需要,延長壽命的正確方法是什麼?
答案:
靜態類型住的AppDomain,因爲他們首次訪問的,直到應用程序域被卸載。所以,只要AppDomain正在運行,您就不需要延長它們的生命週期。
靜態對象被垃圾收集器視爲根的事實永遠不會被GC'ed,這是永遠不會忘記的事情。 – CodingBarfield 2011-06-01 12:57:43