Что нового

[Сеть, интернет] Утечка оперативной памяти

korvindeson

Новичок
Сообщения
19
Репутация
0
Почитал вроде бы и форум и гугль. Ответ ко мне не снизошёл :stars:
Скрипт длинный, выкладывать не буду. Опишу кратко
Код:
Local $oHTTP = ObjCreate("WinHttp.WinHttpRequest.5.1")
   $oHTTP.setTimeouts(5000, 5000, 10000, 10000)

Local $Otch = FileOpen(@ScriptDir & "\проверка.txt", $FO_APPEND)

;цепь $oHTTP.Open, .Send, .WaitForResponse

;До нескольких миллионов строк
$aArray1 = FileReadToArray(@ScriptDir & "\1.txt")

Local $hTimer = TimerInit()

for $j = 0 to UBound($aArray1)-1
     If TimerDiff($hTimer) >= 305000 then
             $hTimer = Null
             $hTimer = TimerInit()
             ;цепь $oHTTP.Open, .Send, .WaitForResponse
     EndIf
     ;цепь $oHTTP.Open, .Send, .WaitForResponse
     $x =$oHTTP.ResponseText
     ;Операции со стрингами StringSplit, StringInStr, результат в $x
     _FileWriteToLine ( @ScriptDir & "\1.txt", 1, "",1)
    If StringInStr(StringInStr($x,"success") <> 0 Then FileWriteLine ($Otch, $aArray1[$j])
next


Операции с файлами нужны в цикле для того, чтобы если что вырубится, можно было продожить с того места где остановились. Скрипт начинает с 5 мб оперативы, разжирается до 500. Кто виновник не пойму. Операции с файлами вроде не должны. В цикле объекты не создаю, таймер обнуляю. Растёт именно в процессе долгой работы. Так что утечка 100%
 

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Вставь в цикле, после каждого действия, которое по твоему мнению может давать утечку памяти, вызов функции. В этой функции записывай в лог, номер строки и сколько памяти потребляет скрипт. Запусти. Посмотри лог, ты увидишь, что после каких то действий памяти требуется больше.
 
Автор
K

korvindeson

Новичок
Сообщения
19
Репутация
0
inververs сказал(а):
Вставь в цикле, после каждого действия, которое по твоему мнению может давать утечку памяти, вызов функции. В этой функции записывай в лог, номер строки и сколько памяти потребляет скрипт. Запусти. Посмотри лог, ты увидишь, что после каких то действий памяти требуется больше.
Не подумал за такой вариант, спасибо! Не представляю правда что может давать утечку, буду лепить после каждого.
 
Верх