![]() |
Forced call GC
Скажите пожалуйста, а это, наверное, плохая практика вызывать GC в коде?
|
его нельзя вызывать.
|
а гугл зачем? http://www.dtf.ru/articles/read.php?id=51967
|
Merlinn, статья - полный бред.
|
и в чем же её бредовость?
|
принудительного вызова GC - нету.
Цитата:
самый гланый бред это Memory Controller. что он контролирует? оформлен как набор копипастов. если я таких 20 штук создам? это статический класс должен быть. статья наполнена субъективными утверждениями, которые основанным на отсутствии опыта разработчика и неумении правильно гуглить. |
Цитата:
|
ммм.... такой тупняковый вопрос, а что GC работает только в дебаг-плеере?
|
DarkLight, "старый добрый способ" тоже работает только в дебаге :) там что роще System.gc(), без вот этого изврата.
QueenT, нет. гц запускается автоматически. а дебаге его можно запускать для профайлинга. что бы отслеживать удаление нужных объектов. |
Ага, спасибо большое.
|
Не понятно почему adobe не прикрутит такую возможность к AS, в других языках же есть. Если знаешь что уже не надо.... хлоп! и нету. А так сиди и думай ничего ли не пропустил, а вдруг где-то листенер, а вдруг ссылочка где-то.... не понятно
|
а как гц опроделит что тебе что то нужно а что то нет, если на все есть ссылка?
|
Как как, если объекту присваивается null, значит мне ни объект ни чайлды в нем не нужны.
ЗЫ Почему ГЦ а не ГК? Так правильнее |
Тогда уж СМ
|
@flash33, О! щас буду пытать. Вот скажите нужен ли мне объект лежащий в ссылке b?
Код AS3:
Код AS3:
|
Вмешаюсь. В первом случае к Object можно будет обратиться через b, несмотря на то, что а = null (Оbject просто не доступен через а). Следовательно объект еще не доступен GC. Во-втором cлучае, такая же история. b все еще нужен нам.
|
_Smirnoff, спасибо, я в курсе. мне интересно мнение flash33.
|
Мне нужен обработчик исключений, если возникают ошибки при обращении к объектам, уже удаленным из памяти. Я не хочу думать об их существовании, только потому что где то ранее я применил к ним извратные конструкции.
Я имею в виду неотслеживаемые ссылки на один и тот же объект. В конце концов это проблема рационального кодирования. |
Конечно такого обработчика нет, но ты очень быстро поймешь, если проект огромный, что ты, что-то не удалил, когда мемори лики задушат...
|
не волнуйся, у меня в голове памяти не 64 кб.
А применительно Код AS3:
|
flash33, гы ... знаешь какой перерасход памяти будет?
|
Да я не про голову, а про ОЗУ. Могу сказать по опыту, что основные лики идут от bitmapData, а к ней никак нельзя clone, тогда точно все встанет. Пулы в помощь. Нужно просто качественно программировать, чтобы за всем уследить
|
Если объект удаляется значит ссылка ведёт в никуда. Смысл в том что программисту легче отследить использование не актуальных ссылок чем наличие левых листенеров и ссылок на класс который использоваться больше не будет, а если и будет то определится по новой с новыми свойствами. Всё же не помешало бы AS такая возможность.
|
flash33, + сколько нужно будет написать синхронизаций, когда будет такое:
Код AS3:
Код AS3:
Добавлено через 5 минут willis83, одинаково муторно отслеживать и то и то. Вы просто не представляете, что это такое :) Вам кажется всё станет просто и прекрасно, жизнь начнёт бить ключом, и наступит мир во всём мире. посмотрите на мои примеры повыше, и подумайте, что если у объекта будет структура немного посложнее, а что если надо будет сделать рекурсивную структуру? представьте работу 2х программистов, которым приходится работать с одним объектом, и один решает, что объект больше не нужен. а если таких программистов в 5? и это только верхушка айсберга. |
BlooDHounD, с чего ты взял, что я против использования ссылок? Используй их себе на доброе здоровье. Я говорю только о том, что нынешняя система не дпускает принудительной очистки памяти. Это налагает на программиста обязательство отслеживать используемую память, а программист - это не Господь Бог. Если бы существовал механизм принудительной очистки + обработка эксепшенов возникших как следствие обращения к null, то разработка больших приложений была бы гораздо легче.
|
А я соглашусь с flash33.
P.S. А ещё - сделали бы они нормальные указатели... |
Цитата:
(взято из com.gaiaframework.assets.DisplayObjectAsset) Код AS3:
Вот вам и "обработка исключений", и "очистка памяти"... Тоесть, так чтобы стало понятнее: - Loader.unload() не генерит исключения никогда. - контент этого лоадера - всегда должен наследоваться от какого-то класса из фреймворка, ни один из этих дурацких классов не слушает Event.UNLOAD, соответственно, как вы можете видеть, никакой альтернативы этому событию не предтавляется (т.е. никаких колбеков / попыток как-то сказать контенту, что нужно начать выгружаться нету). Я себе представляю, чего бы эти кренделя наваяли, будь бы у них возможность еще и за памятью самим следить... |
Цитата:
|
r_r_f_r, вопрос не ясен.
Stargazer, Вам тут не СИ :) flash33, не вижу разницы в отслеживании ошибок, и отписки за собой всех событий. те же яйца, только вид сбоку. елси Вам очень хочется возиться с такой фигнёй, то можете использовать такой класс: Код AS3:
|
:eek: Че это за порнография?
|
BloodHounD, Вы написали о 5-ти программистах работающих с одним объектом, приведите пример пожалуйста, меня интересует в каком это случае каждый из них имеет право на удаление объекта?
В моей голове такого извращения даже не появляется. Если они работают с одним объектом значит они его откуда-то получили, и как известно "вчужой монастырь ...", а если залез(т.е. удалил то этому умнику нужно давать по шапке) А вот ключевого слова delete для сылок не хватает(чтоб удалялся объект и занулялись все ссылки на него, используешь потом - опять же по шапке). По мне тут всё логично и порядочно, но мечтать не вредно, хотя может будет когда-нить ас5:) |
r_r_f_r, мдя ... нет слов.
flash33, ну передавая ссылку на этот объект Вы получаете доступ по слабой ссылке к сомому объекту. удаляя его например из диспэйлиста он удалится и в этом объекте. будет Вам счастье, и сможите везде вставлять проверки на наличие объекта. |
Цитата:
Я не пойму всего этого нытья по поводу GC. Ты написал код, он создал N объектов. Приложение свою функцию выполнило и должно уничтожить эти N объектов. Почему последний этап настолько сложен — не понимаю. Единственным «оправданием» является лень и всё. |
я согласен с __etc
это действительно просто вопрос лени. Но был уже вроде сыр-бор на тему что хоть и ссылки и все все подчищено при больших обьемах гц не запускался сразу, а ждал некоего порога, после чего запускался. Вот в этих случаях возможно конечно действительно стоило бы иметь возможность, форсировать запуск гц. Ну, а в остальных случаях действительно это просто лень. |
BlooDHounD, если нет слов, совсем не обязательно добавлять "мдя". Или только в условии "мдя", все 5 разработчиков смогут смело рубить объект?
|
r_r_f_r, если у Вас так плохо с воображением, то смело вам воображу, что любой публичный объект является потенциально опасным :)
что касается программистов, то ключевое слово у Вас "могут". это не значит, что они это сделают, но если сделает, хотя бы один то ... |
Цитата:
|
В других языках есть возможность контролировать, передается ли обьект по значению или по ссылке - поэтому в ктитических местах в просто получите геттер который вам вернет копию обьекта, а не ссылку. В АС такой номер не всегда пройдет, и еще менее когда уместен - поэтому где-то согласен c BlooDHounD... т.е. если давать возможность удалить, то должна быть возможность не дать удалить.
|
Господа, в каких других языках есть возможность не удалять объект?:)
С++ : Код:
MyClass *myClass = new MyClass();Цитата:
|
| Часовой пояс GMT +4, время: 07:09. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.