Поясню: во многих языках есть сборщики мусора, которые чистят память занимаемую процессом от неиспользуемых данных. Работает ли сборщик мусора в AutoIT?
У меня приложение занимает в памяти 20 мб - хотелось бы как то уменьшить эту цифру.
Когда я писал приложения на C# (который сторонники "плюсов" нередко обвиняли ресурсоемкости), то легко добивался снижения расхода ресурсов комбинацией использования сборщика мусора и метода WinAPI SetProcessWorkingSetSize
Попробовал его применить в AutoIT (за отсутствием сборщика мусора - только его)
Но эффекта не получил - хотя в шарповских приложениях эффект был 2-10 кратный.
Возможно, что в данном случае неправильно использовал данный метод.
Кто-нибудь дать пояснения на эту тему и рассказать какие есть еще варианты по уменьшению расхода оперативной памяти?
---------------------------------------------------------------------------------
Нашел в WinAPIEx.au3 функцию _WinAPI_EmptyWorkingSet() - уменьшила память вдвое. Неплохо. Однако SetProcessWorkingSetSize была все таки эффективней...
---------------------------------------------------------------------------------
Однако все гораздо лучше, если поставить вызов _WinAPI_EmptyWorkingSet на таймер:
объем занимаемой памяти уменьшился почти в 20 раз!
У меня приложение занимает в памяти 20 мб - хотелось бы как то уменьшить эту цифру.
Когда я писал приложения на C# (который сторонники "плюсов" нередко обвиняли ресурсоемкости), то легко добивался снижения расхода ресурсов комбинацией использования сборщика мусора и метода WinAPI SetProcessWorkingSetSize
Попробовал его применить в AutoIT (за отсутствием сборщика мусора - только его)
Код:
Func FlushMemory()
$hProcess= DllCall("kernel32.dll", "ptr", "GetCurrentProcess") ; получим хендел текущего процесс
DllCall("kernel32.dll", "int", "SetProcessWorkingSetSize", "ptr", $hProcess, "int",-1, "int",-1); ужмем его рабочее пространство
EndFunc
Но эффекта не получил - хотя в шарповских приложениях эффект был 2-10 кратный.
Возможно, что в данном случае неправильно использовал данный метод.
Кто-нибудь дать пояснения на эту тему и рассказать какие есть еще варианты по уменьшению расхода оперативной памяти?
---------------------------------------------------------------------------------
Нашел в WinAPIEx.au3 функцию _WinAPI_EmptyWorkingSet() - уменьшила память вдвое. Неплохо.
---------------------------------------------------------------------------------
Однако все гораздо лучше, если поставить вызов _WinAPI_EmptyWorkingSet на таймер:
объем занимаемой памяти уменьшился почти в 20 раз!