Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> UOpilot поедает оперативную память, Какие команды раздувают пилот в памяти?
фонарик
сообщение 2.10.2020, 16:37
Сообщение #1


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Подскажите в чем может быть проблема, и проблема ли это вовсе. Работают параллельно 5 одинаковых скриптов. Проверяют пиксели, жмакают мышку, клавиатуру. Проверяют положение активного окна. Иногда чтото печатают. Периодически делают скриншоты привязанного окна. Регулярно показывают подсказку, что скрипт в данный момент себе думает/делает.

Спустя примерно часа такой деятельности, UOpilot увеличивает кол-во занимаемой ОЗУ компьютера на 50мб. Спустя примерно полтора суток, когда порог приближается к 2гб, перестают работать некоторые команды и функции (не делаются скрины, не читается цвет пикселей).

Как с этим бороться? Что такое важное в таком размере пилот начинает хранить в памяти? Можно ли как-то сбросить у него из мозгов этот хлам? Каккие команды его так напрягают? Подскажите пожалуйста кто что знает.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.10.2020, 17:36
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27680
Пользователь №: 11.279



Кандидат номер один на данную проблему getimage, при условии, что вы не освобождаете память после того, как изображение более не требуется. Примерно та же проблема может произойти, если вы постоянно собираете что-то в массив с новыми индексами либо создаете новые массивы.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 2.10.2020, 17:41
Сообщение #3


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Да, GetImage используется часто и конечно же, из памяти я ничего не удаляю ибо считал, что оно по типу переменной - просто переписывается. Попробую удалять из памяти и посмотреть, что получится. Спасибо Вам за совет, DarkMaster.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 2.10.2020, 17:46
Сообщение #4


***********

Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27680
Пользователь №: 11.279



(IMG:style_emoticons/default/smile.gif)


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
фонарик
сообщение 5.10.2020, 22:35
Сообщение #5


****

Apprentice
Сообщений: 145
Регистрация: 23.11.2011
Группа: Пользователи
Наличность: 0
Пользователь №: 14.305



Все верно, DarkMaster, вы как всегда даете очень полезный совет. Добавив строку DeleteImage, память перестала расхищаться из ресурсов компьютера в таких крупных масштабах. За сутки, размер UOpilot в памяти увеличился с 19мб до 190. Это уже на так критично, хватит работы на несколько дней без перегрузки, пока не начнутся перебои.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 7.10.2020, 0:45
Сообщение #6


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2398
Пользователь №: 18.746



Цитата(фонарик @ 5.10.2020, 22:35) *
размер UOpilot в памяти увеличился с 19мб до 190.

Добавьте эту строку в ваш скрипт collectgarbage ("collect").

Сообщение отредактировал Fors1k - 7.10.2020, 0:46


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
mymerlin
сообщение 17.10.2020, 12:26
Сообщение #7


**

Neophyte
Сообщений: 10
Регистрация: 8.6.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.344



Цитата(Fors1k @ 7.10.2020, 1:45) *

Добавьте эту строку в ваш скрипт collectgarbage ("collect").


Это для Lua или для обычного UO тоже подойдёт? не нашёл ничего про эту функцию в документации
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 17.10.2020, 12:28
Сообщение #8


***********

Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27680
Пользователь №: 11.279



Это только для луа. Вызов коллектора, как правило, ни к чему не приводит, т.к. он вызывается автоматически виртуальной машиной луа.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Fors1k
сообщение 17.10.2020, 15:58
Сообщение #9


*****

Journeyman
Сообщений: 497
Регистрация: 19.12.2017
Группа: Пользователи
Наличность: 2398
Пользователь №: 18.746



Цитата(mymerlin @ 17.10.2020, 12:26) *

Это для Lua или для обычного UO тоже подойдёт? не нашёл ничего про эту функцию в документации

Просто перезаписываем одну и ту же переменную
Код
--lua
log 'clear';log 'mode compact'
-- Создадим файл для теста
require"luaposh";PScode('return',{[[#}
#
[IO.File]::WriteAllLines("C:\files\test.txt",  [Linq.Enumerable]::Repeat("aaaaaaaaaaaa",3000000))
#
]]})
-- Прочитаем файл в переменную
file = io.open([[C:\files\test.txt]], "r");data = file:read("*a");file:close()
-- Второй раз читаем файл в туже переменную без чистки памяти
file = io.open([[C:\files\test.txt]], "r");data = file:read("*a");file:close()
-- Ждем
for i=1, 1000 do wait(2) end
-- Третий раз читаем файл в туже переменную без чистки памяти
file = io.open([[C:\files\test.txt]], "r");data = file:read("*a");file:close()
-- Ждем
for i=1, 1000 do wait(2) end
-- Смотрим результат
memUsed = math.modf(collectgarbage ("count"))
log("занято памяти : "..memUsed)
занято памяти : 103708

Используем collectgarbage
Код
--lua
log 'clear';log 'mode compact'
-- Создадим файл для теста
require"luaposh";PScode('return',{[[#}
#
[IO.File]::WriteAllLines("C:\files\test.txt",  [Linq.Enumerable]::Repeat("aaaaaaaaaaaa",3000000))
#
]]})
-- Прочитаем файл в переменную
file = io.open([[C:\files\test.txt]], "r");data = file:read("*a");file:close()
-- Второй раз читаем файл в туже переменную и чистим память
file = io.open([[C:\files\test.txt]], "r");data = file:read("*a");file:close()
collectgarbage ("collect")
-- Ждем
for i=1, 1000 do wait(2) end
-- Третий раз читаем файл в туже переменную и чистим память
file = io.open([[C:\files\test.txt]], "r");data = file:read("*a");file:close()
collectgarbage ("collect")
-- Ждем
for i=1, 1000 do wait(2) end
-- Смотрим результат
memUsed = math.modf(collectgarbage ("count"))
log("занято памяти : "..memUsed)
занято памяти : 54554


Разница 49мб

Сообщение отредактировал Fors1k - 17.10.2020, 15:59


--------------------
Для связиИзображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 17.10.2020, 16:49
Сообщение #10


***********

Модератор UOPilot
Сообщений: 9.465
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27680
Пользователь №: 11.279



Цитата
Разница 49мб

Цитата
как правило, ни к чему не приводит

Сборщик мусора вызывается в определенном соотношении к операциям выделения памяти. Т.е. грубо говоря обожравшаяся программа со временем похудеет, если этот хлам уже не нужен. Поэтому КАК ПРАВИЛО, но не всегда. Для "особых" случаев ручной вызов и есть.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.4.2024, 11:18
Designed by Nickostyle