2011-09-27 19 views
6

Estoy ejecutando un generador de perfiles de memoria en mi aplicación para encontrar una posible pérdida de memoria. La cantidad de objetos System.Data.Metadata.Edm.TypeUsage crece constantemente y parece que esto puede ser la causa de mis problemas de memoria.Entity Framework TypeUsage Object

¿Alguien sabe una forma de liberar estos objetos de TypeUsatge de la memoria? Parecen ser objetos internos de Entity Framework, ya que no tengo ninguna referencia sobre ellos en mi código. He confirmado que he envuelto el objeto de contexto dentro de un bloque de uso, y la memoria se está liberando, pero este uso de tipo no quiere desaparecer.

Cualquier ayuda que pueda proporcionar sería muy apreciada.

Respuesta

0

Probablemente estés mirando el caché de primer nivel (Change Tracker) que Entity Framework usa debajo. Para leer más sobre esto, mira esto. Me sorprendería si hay una pérdida de memoria aquí, es más probable que esto sea solo un comportamiento normal. ¿Cuánta memoria ves filtrando?

Para liberar la memoria, intente utilizar otra opción de combinación (como NoTracking). El valor predeterminado es AppendOnly, que se mantendrá a los tipos en la memoria que podría usar de nuevo. La opción de fusión NoTracking irá a la base de datos cada vez y no mantendrá nada en la memoria.

Espero que esto ayude.