У меня есть вопрос о Spark DataGrid и о том, как он работает с точки зрения сбора мусора.Я обнаружил, что если я динамически добавляю и удаляю столбцы из DataGrid во время выполнения, GridColumns и ItemRenderers никогда не освобождаются из памяти.
Например, если у меня есть список из 10 элементов, и я создаю10 столбцов, будет 100 ItemRenderers и 10 GridColumns.Если я удаляю все столбцы, они все еще там.
Если я добавлю 5 столбцов назад, это не создаст экземпляров больше GridColumns или ItemRenderers - в памяти все еще остается 100 полных средств визуализации и 10 столбцов.
Этого не происходит с MX DataGrid.По мере удаления столбцов ItemRenderers и DataGridColumns освобождаются из памяти, а когда я смотрю на профилировщик, я вижу 0 ItemRenderers и 1 DataGridColumn.
Кто-нибудь знает, что здесь происходит?Или я просто что-то упустил?
Вот код, который я использовал для проверки Spark DataGrid:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
<s:ArrayList id="dp">
<fx:Object label="label 1"/>
<fx:Object label="label 2"/>
<fx:Object label="label 3"/>
<fx:Object label="label 4"/>
<fx:Object label="label 5"/>
<fx:Object label="label 6"/>
<fx:Object label="label 7"/>
<fx:Object label="label 8"/>
<fx:Object label="label 9"/>
<fx:Object label="label 10"/>
</s:ArrayList>
<s:ArrayList id="columns">
<s:GridColumn dataField="label"/>
</s:ArrayList>
</fx:Declarations>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<s:DataGrid dataProvider="{dp}" columns="{columns}" width="100%" height="100%"/>
<s:HGroup>
<s:Button label="Add Column" click="columns.addItem(new GridColumn('label'))"/>
<s:Button label="Remove Column" click="if( columns.length > 0 ) columns.removeItemAt(0)"/>
</s:HGroup>
</s:Application>