Bonjour,
J'utilise des procédures stockées sur base de données SQL Server
En appelant ce bout de code dans une boucle, je me suis aperçu que la mémoire associée n'est pas vraiment libérée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 var monObjet:TSQLStoredProc; begin monObjet:=TSQLStroredProc.create(nil); with monObjet do begin SQLConnection:=maConnexion; storedprocname:=maprocedure; open; //ici traitement des données lues end; monObjet.close; monObjet.free; end;
Après l'appel à monObjet.free, si je fais une vérification, la variable n'est pas à nil et à chaque boucle, la mémoire occupée par l'exécutable augmente de quelques centaines de Ko, jusqu'à provoquer une erreur "mémoire insuffisante"
J'ai essayé de mettre FreeAndNil(onObjet) à la place de monObjet.free, il passe bien à nil mais la mémoire n'est pas libérée.
Existe-t-il un moyen de "forcer" la libération de la mémoire?
J'ai essayé de remplacer la procédure stockée par un TSQLQuery et c'est mieux mais je ne peux pas remplacer toutes les procédures stockées.
Faut-il faire une action particulière après avoir utilisé une procédure stockée?
Partager