I believe I have finally identified the cause of a huge memory leak in our application, and
it appears to be s:label
I have tested this on many different framework versions.
Please try the following: if you make a custom itemrender and don't use the s:label it
goes away, note disabiling TextLineReycler has no effect.
Using task manager, scout, and IntelliJ Idea Flex profiler all confirm the memory leak. This
seems like a massive issue and has been causing a lot of slowdown and crashes in our app.
I'm guessing I must have messed something up somewhere as I don't see how sucha massive issue
could have been in the framework for soo long (Tested 4.13, 4.14, and 4.15). Please Advise.
~ JT
<?xml version="1.0"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
creationComplete="OnCreationComplete(event)">
<s:List width="100%" height="100%" id="list"/>
<fx:Script><![CDATA[
import mx.collections.ArrayCollection;
import mx.events.FlexEvent;
private var _bindTimer:Timer;
private function OnCreationComplete(event:FlexEvent):void
{
_bindTimer = new Timer(500);
_bindTimer.addEventListener(TimerEvent.TIMER, OnBindTimerTick, false, 0, true);
_bindTimer.start();
}
private function OnBindTimerTick(event:TimerEvent):void
{
BindData();
}
private function BindData():void
{
var items:Array = [];
for (var i:uint = 0; i < 100; i++)
{
items.push(GenerateRandomString(100));
}
list.dataProvider = new ArrayCollection(items);
callLater(BindData);
}
private function GenerateRandomString(strlen:Number):String
{
var chars:String = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
var num_chars:Number = chars.length - 1;
var randomChar:String = "";
for (var i:Number = 0; i < strlen; i++)
{
randomChar += chars.charAt(Math.floor(Math.random() * num_chars));
}
return randomChar;
}
]]></fx:Script>
</s:Application>
|