我正在尝试跨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