У меня большая утечка памяти в программе. Я впервые использую IronPython в тесном цикле, поэтому мне интересно, может ли это быть причиной.
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
Строка с именем column.IncludeColumnFunction никогда не изменяется для данного столбца. Обычно это что-то простое вроде «Row['Foo'] == 'Bar'».
Могу ли я/должен ли я кэшировать скомпилированную функцию? Должен ли я каким-то образом уничтожить переменную области видимости, когда закончу с ней?