Вызов сборщика мусора (FP10)
можно сказать официальный запуск сборщика мусора за счет 10-чного Loader.unloadAndStop: грузим в лоадер 'пустой' gif (который здесь же в классе и храним) и тут же выгружаем с помощью unloadAndStop, в результате запускается GC, все.
Естественно, работа GC дело затратное и использовать такую утилиту вместо грамотной отписки листенеров или удаления объектов дело сомнительное, но в критических местах почему бы и не воткнуть..
примерчик
package silin.utils { /** * принудительный вызов GC * FP10+ * @author silin */ public function forceGC():void { Forcer.force(); } } import flash.display.Loader; import flash.events.Event; import flash.utils.ByteArray; class Forcer { //лоадер private static const LOADER:Loader = new Loader(); //'пустой' gif private static const GIF:Array = [ 71, 73, 70, 56, 57, 97, 1, 0, 1, 0, -128, 0, 0, -1, -1, -1, 0, 0, 0, 33, -7, 4, 0, 7, 0, -1, 0, 44, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 2, 68, 1, 0, 59 ]; //стартует загрузку в лоадер гифа public static function force():void { LOADER.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderComplteteHandler); var ba:ByteArray = new ByteArray(); for (var i:int = 0; i < GIF.length; i++) { ba.writeByte(GIF[i]); } LOADER.loadBytes(ba); } //запускает unloadAndStop по окончании загрузки private static function loaderComplteteHandler(evnt:Event):void { LOADER.contentLoaderInfo.removeEventListener(Event.COMPLETE, loaderComplteteHandler); try { LOADER.unloadAndStop(); }catch (err:Error) { trace( "forceGC: FP10+ is required" ); } } }
Всего комментариев 11
Комментарии
02.07.2009 23:42 | |
А в чем смысл сокращения event до evnt? Ну и err заодно?
|
03.07.2009 15:31 | |
ну это реальная экономия 2-х байт, например
как-то вообще не задумывался над этим, на всех не угодишь ты у Филиппа с Микой не спрашивал почему у них в шаблонах только e ? |
03.07.2009 16:43 | |
где-то читал, что чем короче имя переменной во флэше, тем он быстрее с ней работает.. как-бы глупость, но видимо это так)
|
04.07.2009 01:28 | |
Экономия двух байт?
Быстрее работает? Пишите на ассемблере. |
05.07.2009 16:45 | |
В смысле мтаском? Нет, только правки пару раз вносил, но уже непосредственно в байт-код (на форуме пример выкладывал со сглаживание шрифта).
|
25.10.2009 14:34 | |
>>и вызывать конструктор базового класса, то..
без обид, но бред ведь.. если уж надо такое, то можно в документ классе оставить только лоадер (и что еще нужно неперезагружаемое), в котором и держать флешку, при необходимости перезагружать.. или еще проще: положить перезагружаемую часть в свой класс и пересоздавать экхемпляр |
|
Обновил(-а) silin 25.10.2009 в 15:26
|
Последние записи от silin
- Equalizer (22.06.2011)
- WaveSynthesizer (05.04.2011)
- ToneGenerator (31.03.2011)
- 3D фреймворк (24.10.2009)
- Глобальный бродкастер (04.07.2009)