einen Spring.Net Kontext innerhalb einer statischen Methode Instanziieren verursacht einen Speicherverlust

StackOverflow https://stackoverflow.com/questions/1640582

  •  08-07-2019
  •  | 
  •  

Frage

Ran über diesen vor kurzem und ich gefragt, ob jemand da draußen kann mir eine gute Erklärung geben. Ich tat etwas Refactoring und erstellt eine Feder Kontext einen konfigurierte Service aus einer eingebetteten Config-Datei zu packen wie folgt:

var myService = new XmlApplicationContext("assembly://MyAssembly/MyNamespace/MyService.config").GetObject( "myService") as MyService;

Normalerweise scheint dies in Ordnung zu arbeiten, aber in diesem Fall, da es sich in einer statischen Methode war es ein Speicherleck verursacht, und ich will verstehen, warum so vermeide ich diese Art der Sache in der Zukunft. Das Verfahren soll in erster Linie nicht statisch gewesen, aber das ist ein anderes Thema. Normalerweise ich tun dies und injizieren meine Dienste direkt auf eine ASP.Net Seite über die web.config vermeiden, aber in diesem Fall war es sinnvoll, so nicht die Mühe, mir zu sagen, I "m alles falsch zu machen, ich weiß. -)

Max

War es hilfreich?

Lösung

Wenn Sie statische Methode haben, und Sie halten die myService Instanz-Handle, wird es mit Spring.NET der Singleton Karte und Sie werden gemeinsam genutzt. Solange Sie die Referenz der Anwendungskontext bleiben, um auch haben. Obwohl dies erklärt nicht vollständig die Situation, wenn der Speicher ständig wächst, wenn Sie jedes erstellte Objekt in Ihrer statischen Klasse halten ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top