Fuga de memoria en el objeto de aplicación cruzada simple
-
22-10-2019 - |
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?
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.