0pJl9lTa
offline
Опыт:
3,397Активность: |
Ышо раз об утечках
Скопился ряд вопросов об утечках.
1) Код:
то что выделено - утечка? Т.е. эта строка удаляеца кода мы очищаем кеш с даным ключом? 2) PolledWait - утечка? :-O 3) call DisplayTimedTextToForce( GetPlayersAll(), 10, "blablabla" ) Строка удалиться как нибудь? Автоматически? Или можно самому? Фсёкажись. |
16.05.2006, 15:21 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exAres
I love magic :)
offline
Опыт:
7,788Активность: |
0pJl9lTa:
1) в принципе должна но с КЕШем есть свои глюки т.е. иногда не удаляеться или удаляеться но не то =) 2)Утечка ! потому что у него таймер не обнуляеться : ) и тем более чем он лучше от СлеепЕкшна если он ним всеровно пользуеться, нет ну в принципе его(ПолледВеит) можно использовать но прямыми руками можно сделать лучше ! 3) вот что ето делает Цитата:
native DisplayTimedTextToPlayer удаляет строку по истечении времени. |
|
16.05.2006, 17:29 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
0pJl9lTa
offline
Опыт:
3,397Активность: |
MrSmiLe
2 - Ок 1 - Глюков с кешем у мну нет, а вот насчет строки интересно... 3 - ПО моему со строками существует масса утечек... хотелось бы все таки услышать четкий ответ человека который уверен на 100%. |
16.05.2006, 18:41 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Celebrate
offline
Опыт:
849Активность: |
0pJl9lTa если верить Какодемону, то вот это: I2S(H2I(tr)) - утечка. В его статье про РБ было про написано про стринги.
Вряд ли здесь она есть. Может БРу когда-нибудь заработает. |
16.05.2006, 23:02 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
0pJl9lTa
offline
Опыт:
3,397Активность: |
Celebrate но тогда рб+кеш сам по себе одна большая мега утечка, конечно если юзать его во всем во всем, начиная от спелов, и заканчивая спавном моснтров. жуть.
|
17.05.2006, 07:28 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Чем использовать PolledWait, лучше удавиться. TriggerSleepAction - вот НАШ выбор! =) Строки это вообще утечки - ибо строка - это фактически, обьект, у которого есть конструктор, но от них избавиться нельзя Хотя, на самом деле это намного более меньшее зло, чем, скажем, неудаленная группа. На самом деле нет смысла так кропотливо копаться над каждой утечкой, ибо это того не стоит. Впринципе это то же самое что и сделать ЭВМ, элементы которого будут работать без задержек, или хотя бы, с дискретными задержками - это сказка, поэтому люди пошли другим путем - громадные надстройки над схемами, которые синхронизовали ее элементы... |
17.05.2006, 11:07 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Celebrate
offline
Опыт:
849Активность: |
0pJl9lTa а ты думал почему Какодемон так на него ругается? :)
Просто эта утечка не критична; тем более, если строка один раз создастся, то второй раз точно такую же строку вар не создаст (по статье Какодемона; сам не проверял; саму статью я выложить не могу, тк её нельзя публиковать без разрешения автора). |
17.05.2006, 11:52 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
0pJl9lTa
offline
Опыт:
3,397Активность: |
Celebrate и NETRAT т.е. чем короче строчки, и больше повторений - тем меньше утечек так?
А с этим I2S(H2I(tr)) что? |
17.05.2006, 13:21 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
0pJl9lTa ну на счет повторений мне ничего не известно, длинна строки мало влияет на количество утечек, зато, возможно влияет на размер утечки
А что не так с I2S(H2I(tr)) ? NETRAT добавил: Взял указатель на tr, преобразовал его тип к указателю на строку... |
17.05.2006, 13:39 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
0pJl9lTa
offline
Опыт:
3,397Активность: |
От целебрейта
Цитата:
|
|
17.05.2006, 14:08 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zibada
offline
Опыт: отключен
|
любая хоть однажды заюзанная строка попадает в спец. таблицу строк, и удалить ее оттуда - невозможно.
(при действиях с ней просто создаются новые строки) зато нет повторов строк. так что, это может и утечка, если разных строк используется слишком уж дофига, но не помню, чтобы это когда-то было первоочередной проблемой.
т.е. если в большом цикле создавать новые строки - это плохо (но не представить, кому это может быть надо), если же делать что-то типа I2S(H2I()), получая уже имеющиеся строки, это незначительно. сделать с этим ничего нельзя. |
17.05.2006, 15:29 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
DimonT - видно что Хардкор ;) вот я по подробней опишу "МиФ Утечки" - это так ламеров пугают ;) если что не понятно спрашивайте !!!
это уже есть на форуме но не для всех доступно... Вот и я дошол к про что я писал в начале ! т.е. как надо правильно обнулять ! 1. Обнулять надо только локальные переменые handle типа !(но даже и не все !) т.е. code,boolexpr,conditionfunc,filterfunc и т.п. типы которые не удаляютьса НЕ ИМЕЕТ смысла удалять они если были раз инциализированы то потом используютьса заново (как строки). как писал и на это надо было обратить только локальные переменые т.е. аргументы функии не надо обнулять какой бы он не был ! кстати этим можно пользоватьса ! я в ТРС возвращяю юнита снаряда через "берущего" юнита т.е. есть обнуления лок. переменой а перед этим занчения этого югита передал аргументу . И я думаю что глобальные тоже не надо... ну вот, а для чего мы вообще обнуляем ? есть много версий но кто точно знает ? Я короче где то месяц тому назад я сильно напряг этот вопрос и очень много тестил... и вышел гибридный результат этих "версий" т.е. обнулять надо для того что бы после удаления этого объекта вар смог выдилить на адрес этого объекта еще раз какой нибудь объект ! т.е. адресс юнита = 159785 если мы будет переодическим триггером создовать а потом пред следущим создание удалять этого юнита (+обнулять если он фексируетьса в локальной переменой) то следущий созданый юнит будет иметь этот же адрес (это так называемо в "тепличных" условиях т.е. кроме этой функции на карте больше ничего нету !) а если мы не будем обнулять (если юнит в локальной перемной) после удаления то вар будет выделять другой адрес ! причем просто так утечки памяти минимальные за напр. за 1000 таймеров 8кб. памяти ! простой один юнит занимает около 10 а то и больше ! а это 1000 таймеров ! т.е. "теперь дорогие детишки обратите внимание !" ("Nun liebe Kinder gebt fein Acht") здесь не идёт упор в эти несчясные нескольео Кб. нет здесь происходит величайшая манипуляция в истории человечества ! т.е. подумайте что нам даёт каждый раз новые адреса ? А ? "Я вас не понимаю !" ("Ich verstehe euch nicht !") да ! да ! КЕШ усираетьса так как мы для него используем переведёные адреса (+ еще строками засираем ) для записаи объектов ! а записи в кеше не так и мало жрут ! вот теперь поняли весь хитрый механизм ! (это мне всё Рамми подсказали :yes: угу !) т.е. если не использовать кеш всё стает мене проблематично на счёт этих обнулений хотя тоже желательно обнулять... Toadcop добавил: Цитата:
|
|
17.05.2006, 17:06 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Гм, обнулять следует указатели на обьекты для которых применялся метод Create - типа CreateGroup, CreateRect, CreateBoolExpr и др. - вроде бы так |
17.05.2006, 23:21 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Celebrate
offline
Опыт:
849Активность: |
NETRAT и ещё те, которые были удалены.
|
17.05.2006, 23:25 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,712Активность: |
Не совсем понял - как обьект может быть удален если он не был создан :? |
17.05.2006, 23:31 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
remal
нечто
offline
Опыт:
2,087Активность: |
Toadcop,
Цитата:
|
|
18.05.2006, 00:02 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Podk
offline
Опыт:
420Активность: |
Цитата:
|
||
18.05.2006, 16:13 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Celebrate
offline
Опыт:
849Активность: |
NETRAT ну например если он был создан в одной функции, и используется в другой. Например, ты создал таймер, и когда он истечёт он самоуничтожится. Обнулять таймер надо в обоих функциях.
Я тестил по РБ-ссылкам. |
18.05.2006, 16:33 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Toadcop
offline
Опыт:
54,313Активность: |
Celebrate ты прав ;) ! ну короче да надо тестить по РБ ссылках если они "рециркулируютьса" то это хорошо =) т.е. типа утечек нету ! но конечно нельзя так критично подходить если там разница будет в 100 (адресс) ну короче. изучайте и поймёте ;) !
|
21.05.2006, 14:12 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|