Когда массив массивных массивов обрабатывается большим количеством данных, например, 2 000 000 новых объектов, на которые ссылаются, память в браузере клиента flex увеличивается до 20 МБ. Этот избыток 20 МБ не зависит от переменных, определенных в объекте. Ниже приведен подробный пример.Flex, потребляющий огромную память для больших данных
var list:ArrayCollection = new ArrayCollection;
for(var i:int = 0;i<200000;i++)
{
var obj:Object = new Object;
list.add(obj);
}
При выполнении вышеуказанного кода было увеличено на 20 Мбайт памяти браузера с гибким клиентом. Для другого сценария я попытался добавить объект сценария действия в коллекцию массива. Объект скрипта действия определен ниже.
public class Sample
{
public var id:int;
public var age:int;
public Sample()
{
}
}
При добавлении класса 200000 Sample в массивную коллекцию по-прежнему сохраняется утечка памяти 20 МБ.
var list:ArrayCollection = new ArrayCollection;
for(var i:int = 0;i<200000;i++)
{
var obj:Sample = new Sample;
obj.id= i;
onj.age = 20;
list.add(obj);
}
Я даже попытался добавить Sample Objects в flex arrayList и массив, но проблема по-прежнему сохраняется. Может ли кто-нибудь объяснить, где эта избыточная память потребляется flex?
Почему вы называете это «утечкой»? – ethrbunny