크로스 AppDomain 객체를 실험하고 있는데 아주 이상한 점이 하나 있습니다.간단한 크로스 앱 객체에서의 메모리 누수
MemoryStream 개체를 할당하고 참조를 반환하는 원격 메서드를 호출하면 GC.Collect를 호출 한 후에도 메모리 사용이 상당히 증가하고 중단되지 않습니다().
매번 새로운 String 또는 byte [] 객체를 반환하는 호출 방법에서는 누수가 없습니다.
메모리 프로파일 러는 대부분의 활성 객체가 Char [] 및 String 유형 (MemoryStream의 경우)임을 보여줍니다.
질문은 - 나는 뭔가를 오해하고 원격 호출이 MarshalByRefObject에서 상속하는 것처럼 간단하지 않습니까?
몇 가지 코드를 게시하십시오. AppDomains간에 참조를 전달할 수 없습니다. –
@Henk, 원격 참조에 대한 정확한 용어는 무엇입니까? ([ObjRef]를 투명하게 전달할 때 얻을 수있는 용어입니다 (http://msdn.microsoft.com/en-us/library/system.runtime.remoting.objref.aspx) 인스턴스 간 경계)? – Lucero
@Henk, 간단히 말해 MarshalByRefObject이기 때문에 "참조"라고 부릅니다. 물론 "실제"참조가 없다는 것을 알고 있습니다. 원격 메소드의 코드는 간단합니다.'Stream GetStream() {새로운 MemoryStream (Encoding.ASCII.GetBytes ("Somestring"));}'을 반환하고, 그것을 (다른 AppDomain에서)'remote.GetStream() .Dispose()' – aldem