当使用大量数据(例如 2,00,000 个新引用的对象)处理 flex 数组集合时,flex 客户端浏览器中的内存会猛增 20MB。这个多余的 20MB 与对象中定义的变量无关。一个详细的例子如下所示。
var list:ArrayCollection = new ArrayCollection;
for(var i:int = 0;i<200000;i++)
{
var obj:Object = new Object;
list.add(obj);
}
在执行上述代码时,flex 客户端浏览器内存增加了 20MB。对于不同的场景,我尝试将动作脚本对象添加到数组集合中。动作脚本对象定义如下。
public class Sample
{
public var id:int;
public var age:int;
public Sample()
{
}
}
在将 200000 个 Sample 类添加到数组集合中时,仍然存在 20MB 内存泄漏。
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);
}
我什至尝试将示例对象添加到 flex arrayList 和数组中,但问题仍然存在。有人可以解释一下flex在哪里消耗了这些多余的内存吗?