Ich beschäftige mich mit meinem C# Programmspeicherverbrauch Ich habe eine Speicherkontrolle zwischen dem Start und dem Ende meiner App eingerichtet, um Speicherlecks zu erkennen. Ich habe Warnung, wenn Entity Framework 6 mit Firebird:Entity Framework nicht Speicher freigeben?
var m = GC.GetTotalMemory(true)/1024/1024; // 2MB
using (Entities context = new Entities(ConnectionString))
{
m = GC.GetTotalMemory(true)/1024/1024; //2MB
context.MYTABLE.FirstOrDefault();
m = GC.GetTotalMemory(true)/1024/1024; // 5MB
}
m = GC.GetTotalMemory(true)/1024/1024; // 5MB ??
Durch die context.MYTABLE
Linie Kommentierung aus, wird Speicher bei 2MB bleiben.
Ich weiß alles wird entsorgt, wenn die Anwendung beendet wird, aber ich möchte Speicherlecks auf meinen Objekten erkennen und dieses EF-Problem verhindern, dass.
Gibt es eine Möglichkeit, diesen zusätzlichen Speicher, der von EF verwendet wird, zu entsorgen?
Könnte dieses Problem vom Firebird EF Treiber verursacht werden?
Tia
Es macht wenig Sinn, den Speicher zu messen, der von einem kleinen Codeblock in einer Welt verwendet wird, in der Sie Speicherzuweisung und Freigabe in feinen Details nicht steuern. EF speichert Dinge im Gedächtnis, um die Dinge zu beschleunigen, und Sie versuchen besser nicht, damit zu spielen. – Steve
Laufen Sie 'Debug' oder' Release' Build? – mjwills
Haben Sie versucht, den gleichen Code zweiten, dritten usw. Zeit zu messen? Da EF das Metadatenmodell zum ersten Mal erstellt und zwischenspeichert. –