Pregunta

Estoy experimentando con objetos de apropiamiento cruzado y encontré una cosa bastante extraña.

Cuando llamo a un método remoto, que está asignando un objeto MemoryStream y devuelve su referencia (y que la persona que llama lo dispuso inmediatamente), el uso de la memoria aumenta significativamente y no está disminuyendo, incluso después de llamar a GC.Collect ().

En el método de llamadas que devuelve nuevo objeto de cadena o byte [] cada vez, no hay fuga.

El Profiler de memoria muestra que la mayoría de los objetos vivos son de tipo char [] y cadena (en caso de MemoryStream).

La pregunta es: ¿malinterpreté algo, y las llamadas remotas no son tan simples como heredar de MarshalByRefobject?

¿Fue útil?

Solución

Las llamadas remotas son tan fáciles, pero la vida útil de los objetos y la recolección de basura no son tan simples.

Deberías leer un poco en arrendamientos y patrocinios.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top