J'ai une énorme fuite de mémoire dans mon programme. C'est la première fois que j'utilise IronPython dans une boucle serrée, donc je me demande si cela pourrait être la cause.IronPython: Est-ce que cette fuite de mémoire?
For Each column In m_Columns
Dim rawValue As String
rawValue = line.Substring(column.FileColumnIndex.Value - 1, column.FileColumnEndIndex.Value - column.FileColumnIndex.Value + 1)
If column.IncludeColumnFunction <> "" Then
Dim scope = m_ScriptEngine.CreateScope
scope.SetVariable("Line", line)
scope.SetVariable("Row", targetRow)
If Not CBool(m_ScriptEngine.Execute(column.IncludeColumnFunction, scope)) Then Continue For 'skip this column
End If
targetRow(column.DatabaseColumnName) = column.ParseValue(rawValue, targetRow)
Next
La chaîne nommée column.IncludeColumnFunction ne change jamais pour une colonne donnée. C'est habituellement quelque chose de simple comme "Row ['Foo'] == 'Bar'". Puis-je/devrais-je mettre en cache la fonction compilée?
Est-ce que je devrais détruire la variable scope d'une certaine façon quand j'en aurai fini avec elle?
Outils ne me dira ce que le code fuit aujourd'hui, ils ne me disent ce qui sera un problème à l'avenir. –
@ Jonathan, vous informer sur les problèmes actuels ** vous ** aidera à les éviter à l'avenir. Les devinettes aléatoires sont simplement un chemin plus lent vers cette expérience éducative. – JaredPar