Bonjour,
je développe un logiciel de contrôle d'un automate, logiciel qui doit tourner plusieurs semaines d'affilées.
Mon dernier soucis est qu'au bout de quelques jours, il a pris de l'embonpoint, passant de 9Mo à son lancement à plus de 100Mo.
Pourtant chaque procédure, chaque fonction est testée unitairement et chaque test unitaire vérifie qu'il n'y a pas de fuite mémoire. Par contre du fait du matériel qui n'est pas très stable l'application génère un flot d'exceptions assez conséquent. Le journal texte de ces exceptions n'est pas gardé en mémoire mais écrit sur disque.
J'ai fait un petit programme pour vérifier, et effectivement la mémoire qu'il utilise augmente de 4 ou 8 ko de temps en temps... (surveillés avec le gestionnaire des tâches Windows)
C'est une form CLX vide avec juste un bouton, que je presse plusieurs fois avant de laisser tourner quelques dizaines de minutes.
Dernier test, au démarrage j'avais 6472 ko, et 10 mn plus tard 6524 ko.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 procedure TForm1.Button1Click(Sender: TObject); begin while true do begin Application.ProcessMessages; try raise Exception.Create('coucou'); except on E:Exception do Nb := Nb + 1; end; end; end;
Si quelqu'un a une idée, ça m'intéresse fortement.
Merci
Cédric
Partager