L'instanciation d'un contexte Spring.Net dans une méthode statique provoque une fuite de mémoire

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

  •  08-07-2019
  •  | 
  •  

Question

Récemment, je me suis rendu compte de cela et je me demandais si quelqu'un pouvait me donner une bonne explication. J'étais en train de refactoriser et j'ai créé un contexte printanier pour récupérer un service configuré dans un fichier de configuration intégré, comme ceci:

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

Normalement, cela semble fonctionner correctement, mais dans ce cas, puisqu'il s'agissait d'une méthode statique, cela provoquait une fuite de mémoire et je veux comprendre pourquoi, afin d'éviter ce genre de chose à l'avenir. La méthode n'aurait pas dû être statique en premier lieu, mais c'est un autre problème. Normalement, j’évite de faire cela et m’injecte mes services directement dans une page ASP.Net par le biais de web.config, mais dans ce cas-là, c’était utile, alors ne me dérange pas de me dire que je fais tout faux, je sais. ; -)

Max

Était-ce utile?

La solution

Si vous avez une méthode statique et que vous conservez le descripteur d'instance myService, il sera partagé avec la carte singleton de Spring.NET et vous-même. Tant que vous avez la référence, le contexte de l'application reste également. Bien que cela n’explique pas complètement la situation si la mémoire augmente constamment sauf si vous conservez chaque objet créé dans votre classe statique ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top