我正在嘗試跨AppDomain對象,並發現了一件很奇怪的事情。簡單交叉應用程序對象中的內存泄漏
當我調用一個遠程方法,它分配一個MemoryStream對象並返回它的引用(並立即由調用者處理),內存使用情況相當顯着地增加並且不會下降,即使在調用GC.Collect ()。
在每次返回新的String或byte []對象的調用方法中,都沒有泄漏。
Memory Profiler顯示大多數活動對象的類型是Char []和String(在MemoryStream的情況下)。
問題是 - 我誤解了什麼,遠程調用並不像繼承MarshalByRefObject那麼簡單?
發表一些代碼。您不能在AppDomains之間傳遞引用。 –
@亨克,那麼遠程引用的正確術語是什麼(當你透明傳遞[ObjRef](http://msdn.microsoft.com/en-us/library/system.runtime.remoting.objref.aspx )橫跨邊界的實例)? – Lucero
@亨克,我稱它爲「參考」,因爲它是MarshalByRefObject - 當然我知道沒有涉及「真實」的參考。遠程方法的代碼非常簡單:'Stream GetStream(){return new MemoryStream(Encoding.ASCII.GetBytes(「Somestring」));}',我把它稱爲(在另一個AppDomain中),比如'remote.GetStream() .Dispose()' – aldem