Hi Brian,

The "RemoveAllItemRendererForArrayListData" is a bead in charge of the
removal of all renderers when use "removeAll()" method. So if you don't
plan to do a removeAll, you can remove it. In early days each method (add,
remove, removeAll and update) was in a bead, but removeAll never was
refactored since it is not used always.

The rest commented can be removed since are for Basic version, Jewel will
not use it (But you already have commented).

Regarding your problem. It's clear that there's a memory leak, and some
listeners are hanging, so the items you remove are still there, and you're
creating new ones. To locate the source of the problem you change
temporarily to a basic renderer, to see if the problem persists. If that's
the case, the problem will be in some of the components in Jewel or Basic
in place. If not, the problem will be in your custom renderer. Another
thing to try is to avoid in your test ArrayListView and go with ArrayList
to see if the ALV can be the cause of the problem. As well check if the use
of "CollectionChangeUpdateForArrayListData" with ArrayListView, if that's
completely compatible or we need to do a new one for the later.

IOW, in these kinds of situations try to reduce to the most basic case
where the problem does not appear and grow up until you get the problem
again to localize the source of the problem.

HTH


El sáb, 6 feb 2021 a las 3:34, Brian Raymes (<[email protected]>)
escribió:

> Hi all,
>
>
>
> I’m having an issue that I can’t seem to wrap my head around related to
> the *lack* of garbage collection.
>
>
>
> I have a status screen that displays a somewhat complicated list of items
> in a DataContainer.
>
>
>
> When this screen is viewed, it polls the backend (every second) for an
> updated list of data that is converted into an ArrayListView and bound to a
> DataContainer with a custom renderer.
>
>
>
> The view updates exactly as expected, but the problem is, the application
> memory footprint grows very fast (several MB per second), and never seems
> to perform any garbage collection what-so-ever. Even when I stop the
> polling.
>
>
>
> As for code, here is a small snippet. It’s fairly simple.
>
>
>
>             private function onFindAllAgents(event:ResultEvent):void
>
>             {
>
>                 agents = new ArrayListView(event.result as ArrayList);
>
>                 agents.sort = new Sort([new SortField("sortLevel", false,
> false, true)]);
>
>                 agents.refresh();
>
>             }
>
>
>
>
>
>                 <j:DataContainer width="100%"
>
>                     dataProvider="{agents}"
>
>                     itemRenderer=
> "com.teo.view.acdsupervisor.renderers.AgentItemRenderer">
>
>
>
>                     <j:beads>
>
>                         <j:RemoveAllItemRendererForArrayListData />
>
>                         <js:CollectionChangeUpdateForArrayListData />
>
>                         <!-- <j:RemoveAllItemRendererForArrayListData />
>
>                         <js:DynamicAddItemRendererForArrayListData />
>
>                         <js:DynamicRemoveItemRendererForArrayListData />
>
>                         <js:DynamicUpdateItemRendererForArrayListData />
>
>
>                         <js:DynamicRemoveAllItemRendererForArrayListData /> 
> -->
>
>                     </j:beads>
>
>
>
>                 </j:DataContainer>
>
>
>
> As you can see, I’ve been playing around with other beads, but I’m quite
> sure what they do, or if they are even necessary.
> CollectionChangeUpdateForArrayListData  is necessary for ArrayListView
> (probably should be renamed…), but I don’t understand the others.
>
>
>
> Is there something I am missing?
>
>
>
> Any help will be greatly appreciated!
>
>
>
> Brian
>


-- 
Carlos Rovira
Apache Member & Apache Royale PMC
*Apache Software Foundation*
http://about.me/carlosrovira

Reply via email to