Что нового

Увеличение потребления памяти

ibender

Новичок
Сообщения
3
Репутация
0
Добрый день. Заметил такую вещь, что программы, написанные на autoit, работающие в режиме 24/7 и в которых есть функции, постоянно увеличивают потребление памяти ОЗУ.
Для примера:
Код:
While 1
   _test()
   sleep(5000)
WEnd


Func _test()
   Local $ar[2000][2000], $i, $j
   For $i=0 To UBound($ar)-1
      For $j=0 To UBound($ar,2)-1
         $ar[$i][$j]=Random(0, 10000)
      Next
   Next
EndFunc


В цикле вызываю функцию _test() каждые 5 секунд, в которой обрабатывается больший массив. По логике, при выходе из функции все переменные внутри функции должны освободить память. В диспетчере задач можно отследить, когда идет обращение к функции _test() - резко растет потребление ОЗУ, а в перерыве 5 секунд можно увидеть как потребление падает. И с каждым разом, после выхода из функции потребление памяти растет - почему?
 

IMStrelcov

CTPEJIbLLOB
Сообщения
259
Репутация
66
У меня после каждой отработки функции занимаемая память процессом, выполняющим данный скрипт, колеблется между 2-4 мб., это норм., хотя редко но бывает застряет на 20 мб., но после последующего вызова функции все опять норм.
Попробуйте так же:
Код:
Local $i, $j
 
Автор
I

ibender

Новичок
Сообщения
3
Репутация
0
У меня после каждой отработки функции занимаемая память процессом, выполняющим данный скрипт, колеблется между 2-4 мб., это норм., хотя редко но бывает застряет на 20 мб., но после последующего вызова функции все опять норм.
Попробуйте так же:
Код:
Local $i, $j

При небольших размерах переменных внутри функций вы этого не заметите или заметите через продолжительное время, поэтому для примера я взял большой массив. Отдельное объявление переменных внутри функции типа Local $i, $j (не одной строкой) не помогает.

Дальнейшее копание
Код:
While sleep(2)
   _test()
WEnd

Func _test()
   Local $i=1
EndFunc

При запуске потребление в районе 3 МБ, через некоторое время потребление постепенно падает до 0,7 МБ.
 
Верх