![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 48
|
Здравствуйте.
имеем [CENSORED] в левом верхнем углу там видно System.totalMemory. перемещаясь по portfolio, можно легко убедиться, что System.totalMemory все время возрастает. когда доходит дело до видео то вообще. водскажите пожалуйста, что я делаю не так? класс для объекта галереи: package portfolio{ import flash.events.*; import flash.display.Loader; import flash.display.LoaderInfo; import flash.display.MovieClip; import flash.net.URLRequest; public class portfolioPicture extends flash.display.MovieClip{ public var _picture:pic, loadDone:Boolean, under:MovieClip, preloader:MovieClip, pictureLoader:Loader, bu:transB; public function portfolioPicture(initPic:pic){ //////////////////////////////////////// _picture=new pic; _picture=initPic; x=_picture.__x; y=_picture.__y;; //////////////////////////////////////// under=new trans; var ram:int=6; with(under){ x=-ram; y=-ram; width=_picture.__width+ram*2; height=_picture.__height+ram*2; name="Underlay"; } this.addChild(under); //////////////////////////////////////// loadDone=false; preloader=new picPreload; preloader.x=_picture.__width/2; preloader.y=_picture.__height/2; preloader.scaleX=preloader.scaleY=.2; preloader.name="Preloader"; addChild(preloader); pictureLoader = new Loader(); pictureLoader.load(new URLRequest(_picture.__url)); pictureLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, _loaded,false,0,true); pictureLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, _progress,false,0,true); pictureLoader.name="Loader"; addChild(pictureLoader); //////////////////////////////////////// if(_picture.__isButton) { bu=new transB; bu.name="Button"; bu.width=_picture.__width,bu.height=_picture.__height; bu.addEventListener(MouseEvent.MOUSE_DOWN,mousedown,false,0,true); addChild(bu); } //////////////////////////////////////// this.addEventListener(Event.REMOVED_FROM_STAGE,removedEvent,false,0,true); } function removedEvent(ev:Event){ this.removeEventListener(Event.REMOVED_FROM_STAGE, removedEvent); destroy(); } function mousedown(e:MouseEvent){ (parent.parent as MovieClip)._lagrePic(_picture.__chapter,_picture.__part,_picture.__num); } function _loaded(e:Event){ loadDone=true; stopLoadingProgress(); pictureLoader.width=_picture.__width; pictureLoader.height=_picture.__height; } function _progress(e:ProgressEvent){ var tk:int=e.target.bytesLoaded/e.target.bytesTotal*100; preloader.indicate(tk); } function destroy(){ stopLoader(); while(numChildren) removeChildAt(0); if(_picture.__isButton) bu.removeEventListener(MouseEvent.MOUSE_DOWN,mousedown); _picture=null,under=null,bu=null; //trace("portfolio picture completely destroyed") } function stopLoader(){ if(pictureLoader) { removeChild(pictureLoader); if(loadDone){ pictureLoader.unload(); } else { pictureLoader.close(); pictureLoader.unload(); stopLoadingProgress(); } } pictureLoader=null; } function stopLoadingProgress(){ pictureLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, _loaded); pictureLoader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,_progress); removeChild(preloader); preloader=null; } } } класс для группы тумбнейлов: package portfolio{ import flash.display.MovieClip; import flash.events.Event; public class portfolioThumbs extends flash.display.MovieClip{ public function portfolioThumbs(partToBeDrawn:poItem){ for(var n=0;n<partToBeDrawn.thumbs.length;n++){ var thu:portfolioPicture=new portfolioPicture(partToBeDrawn.thumbs[n]); thu.name=("thumb_N_"+n); this.addChild(thu); } this.addEventListener(Event.REMOVED_FROM_STAGE,removedEvent,false,0,true); } function removedEvent(ev:Event){ this.removeEventListener(Event.REMOVED_FROM_STAGE, removedEvent); destroy(); } function destroy(){ while(numChildren>0) removeChild(getChildAt(0)); //trace("thumbnails destroyed"); } } } Последний раз редактировалось tkaChuck; 27.04.2010 в 09:08. |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 48
|
да, прошу прощения.
|
|
|||||
|
Регистрация: Nov 2005
Сообщений: 48
|
да, насколько я могу судить, это главное. - и память свободна)
Добавлено через 23 минуты я все зануляю, от всего отписываюсь, удаляю не только главный объект из дисплейлиста но и всех детей от него тоже, и их детей, и детей их детей. объекты вроде перестают существовать, но память жрется с бешеной скоростью и не освобождается никогда. браузер рано или поздно виснет.. заказчик скоро меня пошлет. ответьте пожалуйста на такие вопросы а то я сам не уверен. 1. если объекты имеют ссылки друг на друга, но находятся не в дисплейлисте, и никто в дисплейлисте не имеет ссылок на эти объекты. будут ли они уничтожены? 2. неужели нет способа вызывать GC принудительно? А то, например, когда в галереее загружается видео, тоталмемори возрастает, потом (когда его уже типа удалили)снижается но не до исходной отметки, и очень не сразу. хотя я останавливаю видео и делаю unload(); .. и тормозит. на это видео натравить бы GC сразу как я отписался. 3. когда делаешь debug->list objects (ctrl-L), видишь там только элементы дисплейлиста. их и так видно, а как увидеть те которые НЕ в дисплейлисте? 4. Почему не работает download? имеем var fileRef:FileReference=new FileReference(); var req:URLRequest = new URLRequest("http://www.eyesofdream.com/resume.pdf"); fileRef.download(req,"resume.pdf"); 5. Через неравные промежутки времени происходит нечто, и памяти становится занято на 41 байт больше. это необратимо. уже я искал всячески. что это такое может быть? 6. что происходит с объектами, которые не в текущем кадре? вот, скажем, у меня есть в кадре #40 такое. . и вот, я перехожу в соседний кадр. кнопки больше в дисплейлисте нет. в списке объектов (в дебаггере List Objects) ее нет. но память она занимает и со временем никуда не девается! или нет? 7. когда вызывается fileReference.browse(), то все останавливается. как это вызвать самостоятельно? прошу вас, братцы, помогите я сильно горю по срокам. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Картинки каких размеров?
И да, потребление 400+ мегабайт памяти и 120% двухядерного процессора — не самое лучшее достоинство сайта. Я бы сказал, главная особенность. |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 48
|
а, картинки маленьки ваще..
Да, как бы нифига ни разу не круто. У меня 140%. Еще это небо. Оно обязательное условие в "дизайне".. Оно в эти 140 делает значительный вклад. Дополнительный вопрос: как можно оптимизировать проигрывание ролик на фоне? сейчас это видео на таймлайне |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Убрать его вообще. Равно как и проплывающие хреновины.
|
|
|||||
|
Регистрация: Jun 2008
Адрес: курский вокзал
Сообщений: 1,114
|
Ох, ты ё, это видео, а я думал что Вы так с PerlinNoise так зафигачили.
Ну во-первых убрать видео с тамлайна, и запустить сайт без него. У Вас же сайт-то простой, там нет ничего такого чтобы жрало ресурсы. Попробуйте убрать фоновое видео, и потом летающие штуки, Вы их удаляете,когда они за экран уходят?
__________________
Я просто добрый шутник. |
|
|||||
|
Регистрация: Nov 2005
Сообщений: 48
|
я горжусь вами, братцы.
На вопрос "что делать с небом - оно должно присутствовать но не тормозить?" получаем два отличных совета от него избавиться. На главный вопрос "что жрет ресурсы??" имеем "там нет ничего такого чтобы жрало ресурсы". Ну и в довершение, внезапно обнаружена ошибка. прелестно. Старый анекдот. Водитель выходит из автобуса и начинает чинить. Тут к нему подходит мальчик и говорит: Дядя я знаю, что у вас сломалось. Водитель кричит: Ну и что у меня сломалось??? Мальчик отвечает: Дядя у вас сломался автобус. вы простите за сарказм, просто поймите правильно. я делаю все что знаю, но элементарный сайт жрет раз в 20 больше чем должен. Это мой первый проект на АС3.. вот что я делаю. я зануляю все ссылки на объекты, которые мне больше не нужны. тоесть делаю этим переменным =null. Я отписываюсь от всех листенеров, и на всякий случай всегда юзаю weakReference. лоадерам всем я делаю unload. я положил там два класса. ими одними можно добиться невиданных тормозов, поверьте) |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|