Ho un'applicazione molto semplice che utilizza EF. Ma quando viene eseguita una settimana, l'utilizzo della memoria è terribile (solo 80 MB in un primo momento, 700 MB dopo una settimana). Quando uso dotMemory per profilare la mia applicazione. Trovo che la memoria della generazione di heap 2 sia in continuo aumento.Perdita di memoria quando si utilizza Entity Framework
ottengo una fotografia istantanea, infine, trovare i byte distribuiti della DbContext ef è la più.
Io sono così confusa. La mia domanda è così semplice. Esempio di codice:
protected CarbonBrushMonitorEntities _entities = new MYEntities();
public void Add(HistoryData data)
{
_entities.HistoryDatas.Add(data);
_entities.SaveChanges();
}
_entities
solo le iniziali, una volta, al momento di partenza, poi utilizzato per tutto il tempo.
La funzione Add
è spesso chiamata, circa 3 volte/secondo
I Google da molto tempo, e provare alcuni metodi come:
_entities.Configuration.ValidateOnSaveEnabled = false;
_entities.Configuration.AutoDetectChangesEnabled = false;
_entities.Configuration.LazyLoadingEnabled = false;
ma questi non funzionano.
Come gestisci la durata del tuo contesto EF? Disponi/ricrearlo mai? – ken2k
@ ken2k crea all'orario di partenza, quindi usato sempre. mai disporre/ricreare. Poiché la mia applicazione Architettura utilizza Ioc e Dipendenza iniezione. – yubaolee
In quale classe si trova il metodo di aggiunta? – lloyd