Bonjour,
Je pense avoir détecter une fuite de mémoire dans un bout de code de mon application.
Je l'ai récupéré et remis dans une appli "vierge". J'ai une form dans laquelle j'ai 4 labels, un tooltip et un timer puis un module public dans lequel j'ai une enumération.
Le code est le suivant :
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim alarm As _AlarmEnum
Dim i As Integer
Timer1.Stop()
Try
For i = 0 To 3
alarm = CType(1, _AlarmEnum)
tooltip1.SetToolTip(label_alarm_code(i), alarm.ToString)
If alarm <> _AlarmEnum.ErrNone Then
label_alarm_code(i).BackColor = Color.Red
Else
label_alarm_code(i).BackColor = Color.Black
End If
Next
Finally
Timer1.Start()
End Try
End Sub
Rien de bien sorcier et pourtant quand je lance mon .exe, l'utilisation de la mémoire est à 10MB et après une nuit (on va dire 10H), l'utilisation de la mémoire est passé à 70MB et elle ne stabilise toujours pas!
Comme dans ma "vraie" appli, j'ai plusieurs fois ce bout de code, au bout d'une nuit, l'appli est plantée, il faut la fermer pour libérer les ressources (pas terrible pour de la prod). J'ai déjà essayer de forcer le garbage collector, mes objets semblent finalisés...
J'étais en vb2003, je suis passé en vb2005 express rien n'y fait. J'ai essayé sur 3 PC différents (XP pro et NT).
Quelqu'un a une idée ?
Et une autre petite question, comment on passe en mode release sur VB2005, sur VB2003 pas de soucis mais sur 2005 je ne trouve pas (Projet/Propriétés de l'appli/compiler-débobguer....??) Pour info j'étais en mode release sous vb2003 mais c'est pareil.
Merci d'avance et bonne continuation à tous!
Nico