Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > dimarik

Оценить эту запись

Kung-fu. Как правильно терять ссылку на master string.

Запись от dimarik размещена 05.11.2013 в 23:11
Обновил(-а) dimarik 06.11.2013 в 01:16

В очередной раз пытаясь умерить аппетиты своего приложения для мобилки, нашел забавным поведение эмулятора (adl). Вполне возможно, это распространяется на остальные flash-похожие рантаймы.

Будем "выгружать" т.н. master string. Сразу скажу, что выгрузить его у меня не получилось. А у jacksondunstan можно почитать о технике устранения неприятеля. Я не думаю, что они выгрузили его из памяти. Скорее просто потеряли ссылку на него.
Но вот сама техника подкачала. Ссылка на master string не всегда удалялась. Тогда я немного поэкспериментировал с masterString.substr();

В результате эксперимента удалось найти устойчивое количество ингредиентов, при котором подстрока теряла связь с мастер-строкой. И что бы вы думали? Это magic number! Ответ "42" "26".
Однако я владел мастер-строкой и все эксперименты проводил с ней.

Код AS3:
private static const cleaner:Dictionary = new Dictionary();
 
var masterString:String = byteArray.toString(); // Какая-то строка
const magicNumber:uint = 26;
if (masterString.length > magicNumber) {
    var count:uint = masterString.length - magicNumber;
    var subString:String = masterString.substr(1, count);
    trace('Check master', flash.sampler.getMasterString(subString) ); // Все та же "какая-то строка"
    cleaner[subString] = null;
    delete[subString];
    trace('Clear master', flash.sampler.getMasterString(subString) ); // null, крррруть! нет вроде как мастер-строки! 
}
Единственная и самая горькая засада в том, что мы только теряем ссылку через подстроку на мастер-строку, которая все так же остается в памяти. Зато забавно!

Тестировал на adl AIR 3.9
Всего комментариев 10

Комментарии

Старый 06.11.2013 11:02 Котяра вне форума
Котяра
 
Аватар для Котяра
Dimarik, у тебя уже всё так круто, что проблема в мастерстроках?
Старый 06.11.2013 11:07 dimarik вне форума
dimarik
 
Аватар для dimarik
Ага. У меня строк на 12 Mb. И я не знаю как их выковырять оттуда.
Старый 06.11.2013 11:10 Котяра вне форума
Котяра
 
Аватар для Котяра
Интересно, а строковые константы эвентов дублируются? Может тогда надо юзать substr?
т.е. вместо
Код AS3:
type = Event.CHANGE
использовать
Код AS3:
type = Event.CHANGE.substr();
Старый 06.11.2013 11:48 alexcon314 вне форума
alexcon314
Цитата:
У меня строк на 12 Mb
И все мастер? Как это ты так запилил?
Старый 06.11.2013 12:14 Котяра вне форума
Котяра
 
Аватар для Котяра
Возможно, парсинг ответов с сервера.
Старый 06.11.2013 12:53 alexcon314 вне форума
alexcon314
м.. да. засада.
Старый 06.11.2013 23:32 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
Я тут скачал войну и мир Толстого. Два фб2 файлика в сумме дают 5.5 метров.
Старый 07.11.2013 00:20 in4core вне форума
in4core
 
Аватар для in4core
Ну подумаешь 2 войны и мира загнали, с кем не бывает
Старый 07.11.2013 14:02 dimarik вне форума
dimarik
 
Аватар для dimarik
фб2 пожатый формат, скорее всего. У меня raw string.
Старый 07.11.2013 14:36 Dukobpa3 вне форума
Dukobpa3
 
Аватар для Dukobpa3
>> FictionBook is an open XML-based e-book format
 

 


Часовой пояс GMT +4, время: 00:11.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.