J'utilise NHibernate dans mon application ASP.NET pour se connecter à une base de données MS SQL Server 2005. Dans certains cas, j'ai besoin d'écrire mes propres requêtes SQL. Cependant, je remarque que le fil du serveur SQL fuites environ 50 Ko de mémoire à chaque fois que j'exécute le morceau de code suivant:Fuite de mémoire lors de l'utilisation du temps dans NHibernate requête SQL
NHibernate.ISession session = NHibernateSessionManager.Instance.GetSession();
ISQLQuery query = session.CreateSQLQuery(
"select {a.*} from t_alarm a where a.deactivationtime > '" +
DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") +
"'");
query.AddEntity("a", typeof(TAlarm));
System.Collections.IList aList = query.List();
Quand je regarde dans le gestionnaire de tâches de Windows, je vois que le processus sqlservr.exe
augmente son utilisation de la mémoire 50 Ko chaque fois que je lance ce code.
Voici la partie vraiment intéressante. Si I, dans le code ci-dessus, remplacer "yyyy-MM-dd HH:mm:ss"
avec "yyyy-MM-dd HH:mm"
(à savoir je supprimer les secondes), la fuite de mémoire cessent.
Mise à jour: Apparemment, les fuites de mémoire ne s'arrêtent pas réellement. Ils montrent juste une fois par minute à la place. Vraisemblablement lorsque la requête SQL change.
Les résultats retournés sont les mêmes dans les deux cas.
Quelqu'un a-t-il une idée de ce qui se passe ici?
pouvez-vous expliquer comment vous êtes arrivé à la conclusion que SQL Server fuit? –
Quand je regarde dans le gestionnaire de tâches de Windows, je vois que le processus augmente Sqlservr.exe son utilisation de la mémoire de 50 Ko chaque fois que je lance ce code. J'ai ajouté cela à la question également. –