Перед вами триггер, вызывающий утечку памяти, как ее избавиться без джаза?

Ну во первых, не должно быть подобных триггеров, которые каждый сколько то секунд что -то делают, то есть их желательно держать выключенными и включать, когда нужна подобная проверка или подходит случай.
Второе, ты каждые две секунды создаешь группу, даже пустую и она улетает у тебя в трубу.
Ты вне этого триггера создаю группу и когда у тебя условие в твоем переодическом триггере срабатывает просто добавляй туда юнита или убирай его оттуда.
Точно не знаю, что у тебя там, но можно сделать локалку типа группа в переодическом триггере и удалять и обнулять ее там же, если она не нужна.
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
~8gabriel8:
Вот карта, где есть удаление отрядов игроков:

По идее на стороннем ресурсе есть эти темы про удаление утечек:
Но при беглом осмотре не увидел там информации, которую ты здесь спрашиваешь.
ответ
PAMEXI:
makkad:
А может ли быть дело не в триггерах, а к примеру в моделях? Кто нибудь когда нибудь сталкивался с фризами из-за используемых моделей?
Это звучит глупа... Фризы из-за модели...
Тем не менее, попробовал удалить весь импорт из карты (около 6 МБ, 157 файлов mdx). Лаги и фризы прекратились. Сейчас дихотомией пробую найти проблемную модель. Хотя может проблемная модель и не одна, или например может быть накапливаемый эффект, который так не найти.

Сильно уменьшил число лагов, избавившись от двух моделей. Эти модели ещё и сами по себе вели себя странно. В частности, фундамент из модели Домика произвольно прикреплялся к анимациям других моделей. А модель Академии иногда меняла свой видимый масштаб без причины.
Вставил эти модели в пример xgm.guru/files/100/244875/comments/448654/Models.w3m, где видны эти артефакты
Модели скачивал от сюда:
ответ
сорян за некропост, но дам ответ на данный вопрос, т.к. появились нужные знания
эта функция утечна на 1.26, а точнее сам локальный звук, поэтому лучше юзать глобалки заготовленные и ресайкл систему, но там настолько ущербная утечка, что её можно и проигнорить в принципе
ответ
Пока юнит разлагается и ты видишь на земле труп, юнит занимает место в памяти, если же юнит разложился -то его уже нет и память он не занимает.
Разумеется в картах типа товер дефенсов имеет смысл сокращать время сокращения или делать суммонами, чтобы после смерти они исчезали не оставляя трупы - вспомните что происходит с духами волков после их убийства. Но тут палка о двух концах, юниты могут наносить урон и убивать других юнитов - так вот если какой нить самон плюнет во врага и сдохет, а тычка долетит до цели через некоторое время и убьет - убивший юнит будет равен null, в доте есть такой баг, змейки веномансера имеют ядовитую атаку и часто обеспечивают суецид врагам, не давая бабки за фраг их хозяину.
ответ
Ну я сегодня за кэпа, обьясню вкратце:
Утечки - это необнуленные переменные и всякий прочий темпо-мусор, который засоряет собой оперативку игры.
Многие функции ГУИ(триггеров) содержат в себе незначительные утечки - к примеру всякие математические функции, некоторые же содержат значительные утечки - например, функция "двигать в точку" создает целый обьект "локация", который там и остается, а по хорошему должен быть удален.
Обычно, это все не важно, если ты не создаешь сложных триггеров с малым интервалом. Например, у тебя есть способность "блинк", которая триггерно двигает юнита в точку - от такой способности не создастся так много точек, что у тебя начнет тормозить игра, даже за час непрерывного спама.
А вот если у тебя есть способность, которая двигает юнита таким образом каждые 0.01 сек (в течение 1 секунды он плавно летит, к примеру) - то тут лучше бы за собой убирать.
Когда ты поймешь насколько утечные ГУИ функции, ты начнешь постепенно переходить на Джасс, а когда ты поймешь насколько много текста на джассе ты должен напечатать даже для того чтобы просто нанести урон в области и навесить эффект - на этом моменте тебе расхочется делать карты.)

Ответы (2)
9
Daroro, ну если прям дохуя - да. В переодических триггерах такое крайне нежелательно. Могу помочь освоить жасс, ну или банально исправлять утечки через личный сценарий (кастом скрипт). Контакты в профиле
22
Проблема в том что каждые 2 секунды создаётся группа (юниты в области), и она не уничтожается, а остаётся навечно. Можно в принципе с самого начала создавать группу, и уже в ней перебирать юнитов, тогда утекать не будет
28
Комментатор выше не упомянул ещё одну утечку, которая создаётся в функции энума, где локальная переменная не обнуляется. Тут действительно только кастомскриптом закидывать юнитов в группу
30
как ее избавиться без джаза?
Представить что её нет и забить болт.
21
Ну во первых, не должно быть подобных триггеров, которые каждый сколько то секунд что -то делают, то есть их желательно держать выключенными и включать, когда нужна подобная проверка или подходит случай.
Второе, ты каждые две секунды создаешь группу, даже пустую и она улетает у тебя в трубу.
Ты вне этого триггера создаю группу и когда у тебя условие в твоем переодическом триггере срабатывает просто добавляй туда юнита или убирай его оттуда.
Точно не знаю, что у тебя там, но можно сделать локалку типа группа в переодическом триггере и удалять и обнулять ее там же, если она не нужна.
Принятый ответ
Ответы (2)
30
SсRealm, как делать кастомные ауры без триггеров перебора?
21
nazarpunk, Месяц назад был вопрос у парня, там десятка три триггеров перебора и спустя десять минут вылет в связи с нехваткой памяти.
Ты прав, без них вообще нельзя, но лучше не пренебрегать
Чтобы оставить комментарий, пожалуйста, войдите на сайт.