I have profiled my app in iPhone 7 Plus with Adobe Scout and I have finally found what is allocating so much memory in my app. It perfectly match what I have experiencing so far and what I have posted in the previous posts. It's just that it was not showing when I was running app from the PC. It is finally shown when I profiled app from the iPhone.
I have finally found killer of my app and killer is dispatching events.
Look at this picture and see massive memory allocation for strings only for less than a minute of play. See how GC is struggling to release all those strings and thus affects FPS heavily:
Those events are triggering because I am drawing laser lines on every frame and lasers are rotating plus their reflection so I need to add and remove a lot of objects from the scene on every frame depending on how reflection took place. Some times there can be only 2-3 reflected rays but sometimes there can be many. Plus if I add more than one laser I am loosing performance very quickly just because of dispatching events. All those events are triggered by adding and removing child from display list.
Daniel please, how hard is to disable all the events in Starling because I am not using them. I do not use ENTER_FRAME, ADDED_ON_STAGE, REMOVED_FROM_STAGE?
Would it be good idea to disable events per container only so that for example for UI container I use events because Feathers obviously needs them but my game display objects does not need them. And my game logic does not depend on display object events.