Flex 4.5 spark datagrid Itemrenderer Memory Leak



我们有Spark dataGrid,其中包含许多ItemRenderer。 我们每次加载超过 200 行。这会导致我们的应用程序中出现内存泄漏。那么有没有办法释放ItemRenderers呢?

分析时问题几乎与 THIS 相似

实例不断上升,我使用 arrayCollection 作为数据提供者。我甚至调用数据提供者(arrayCollection).removeAll(),显示变为空白,但itemRenderer的实例数并没有下降。然后,我在探查器中运行垃圾回收器,项目呈现器仍保留在内存中。如何从内存中删除项目渲染器?

请确保您的项目呈现器不使用 MXML 中的事件处理程序,因为 MXML 事件处理程序不使用弱引用,因此永远不会进行 GCed。

例如:我在 mxml 中有一个项目渲染器组件,看起来像<s:ItemRenderer>

相反,我创建了一个基类:公共类 ItemRendererBase 扩展了 ItemRenderer,并在构造函数中添加了事件侦听器 this.addEventListener(FlexEvent.CreationComplete, OnCreationComplete, false, 0, true)

对于子组件事件处理程序(如 <s:Button>,请删除内联事件连接,而是将重写中的事件处理程序连接到重写 OnCreationComplete 中,使用 false, 0, true 以使用弱引用。

还要确保手动调用GC集合进行测试,我建议使用Adobe Scout。

最新更新