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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
23
Отключай поочерёдно триггеры/функции, и смотри, когда хэндлы перестанут генерироваться. С учётом того, что деревья и юниты на карте тоже считаются счётчиком. Мне помогало)
30
Я ж уже не раз писал, важно не само количество хэндлов, а динамика их роста. Если значение колеблется вокруг некоего числа, то можно забить болт. Если же улетает в космос, то нужно бить тревогу.
И неплохо бы ссылку на UjAPI: Handle Counter привести, чтоб люди не искали.
6
В общем ситуация следующая, после того как удалил в триггере отвечающий за перемещение отряда несколько переменных оставшиеся от изначальной версии системы и не несущие никакого смысла более того не стирающиеся в триггере после выполнения своих функций, рост хэндлов после отдачи приказов отрядам пропал, что гигантски хорошо.
Помимо вышеописанного, я ради интереса не стал удалять по одному триггеру, а удалил абсолютно все (чистый лист рт), проверил, точно такое же кол-во стартовых хэндлов какое и было до удаления абсолютно всех триггеров.
Чем больше карта - тем больше кол-во стартовых хэндлов, но как то не в соизмеримых пропорциях. На карте 64x64 с маленьким кол вом декораций хэндлов аж почти под 7000, в то время как на карте 127x127 с явно большим кол-вом декораций их всего за 10 000.
Теперь остается выяснить что же из триггеров заставляет расти хэндлы на +1 после подготовки каждого юнита.

После полного уничтожения отряда кол-во хэндлов становится меньше стартового.

Извиняюсь, после удаления абсолютно всех триггеров кол-во стартовых хэндлов упало с 6987 до 6449, это скорее всего из за раставленых отрядов в которых юниты записаны в определенные переменные. После уничтожения отряда переменные отрядов очищаются в связи с чем общее кол-во хендлов и падает ниже стартового показателя.
30
Чем больше карта - тем больше кол-во стартовых хэндлов, но как то не в соизмеримых пропорциях. На карте 64x64 с маленьким кол вом декораций хэндлов аж почти под 7000, в то время как на карте 127x127 с явно большим кол-вом декораций их всего за 10 000.
Ну так 3000 декораций это не мало.
После полного уничтожения отряда кол-во хэндлов становится меньше стартового.
Потому что после разложения юнитов их хэндлы освобождаются и переиспользуются.
Теперь остается выяснить что же из триггеров заставляет расти хэндлы на +1 после подготовки каждого юнита.
30
Как удалить утечку созданного юнита?
function DoSomething takes nothing returns nothing
		local unit u = CreateUnit( Player( 0 ), 'hpea', 0., 0., 270. )
		....
		set u = null
endfunction
6
Еще крайне неприятный факт, когда создается отряд 12 юнитов, то хэндлы повышаются с 6812 до 6835, но при полном уничтожении отряда хэндлы падают даже не до 6812, а до 6823, на 11 больше остается чем было, что страшно.

Jass MythBusters
Спасибо. Но есть ли способ на гуи?

function DoSomething takes nothing returns nothing
local unit u = CreateUnit( Player( 0 ), 'hpea', 0., 0., 270. )
....
set u = null
endfunction
это способ вернуть цвет юниту после применения перевоплощения? только в коде определенные параметры цвета, а нужны параметры умирающего юнита.
23
это способ вернуть цвет юниту после применения перевоплощения? только в коде определенные параметры цвета, а нужны параметры умирающего юнита.
Это игрок 0, ид юнита, координаты х, у, угол поворота.
Утечка убирается через set u = null.
30
Еще крайне неприятный факт, когда создается отряд 12 юнитов, то хэндлы повышаются с 6812 до 6835, но при полном уничтожении отряда хэндлы падают даже не до 6812, а до 6823, на 11 больше остается чем было, что страшно.
Хэндл юнита очищается после окончания разложения. Ты подождал?

Спасибо. Но есть ли способ на гуи?
Возможно есть, только я его не знаю.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.