Whenever I change scenes I get a long pause of 3-8 seconds, before the next scene begins to load. This pause only happens on Android devices, some devices worse than others (Nook seems particularly bad but and older Galaxy tab is pretty bad, too). In logcat I see something like this during the pause:
D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 1648K, 54% free 12593K/27143K, paused 13ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 844K, 53% free 12786K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 13ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 16ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 14ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 14ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 830K, 53% free 12786K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 837K, 53% free 12787K/27143K, paused 12ms D/dalvikvm( 9313): GC\_CONCURRENT freed 732K, 52% free 13229K/27143K, paused 1ms+2ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 1575K, 54% free 12711K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 1051K, 54% free 12710K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 1051K, 54% free 12710K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 1051K, 54% free 12710K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 1051K, 54% free 12710K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 533K, 54% free 12710K/27143K, paused 11ms D/dalvikvm( 9313): GC\_CONCURRENT freed 1090K, 53% free 12818K/27143K, paused 1ms+2ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 968K, 53% free 12820K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 964K, 53% free 12819K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 964K, 53% free 12819K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 964K, 53% free 12819K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 964K, 53% free 12819K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 964K, 53% free 12819K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 964K, 53% free 12819K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 964K, 53% free 12819K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 964K, 53% free 12819K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 964K, 53% free 12819K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 964K, 53% free 12819K/27143K, paused 12ms D/dalvikvm( 9313): GC\_CONCURRENT freed 1111K, 53% free 12964K/27143K, paused 2ms+2ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 438K, 53% free 12819K/27143K, paused 11ms I/dalvikvm-heap( 9313): Grow heap (frag case) to 13.804MB for 1293616-byte allocation D/dalvikvm( 9313): GC\_FOR\_ALLOC freed \<1K, 49% free 14082K/27143K, paused 11ms D/dalvikvm( 9313): GC\_CONCURRENT freed 239K, 48% free 14158K/27143K, paused 2ms+2ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 2536K, 53% free 12896K/27143K, paused 12ms D/dalvikvm( 9313): GC\_CONCURRENT freed 1K, 48% free 14158K/27143K, paused 1ms+1ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 2536K, 53% free 12896K/27143K, paused 12ms D/dalvikvm( 9313): GC\_CONCURRENT freed 1K, 48% free 14158K/27143K, paused 1ms+1ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 2536K, 53% free 12896K/27143K, paused 11ms D/dalvikvm( 9313): GC\_CONCURRENT freed 1K, 48% free 14158K/27143K, paused 2ms+1ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 2536K, 53% free 12896K/27143K, paused 13ms D/dalvikvm( 9313): GC\_CONCURRENT freed 1K, 48% free 14158K/27143K, paused 1ms+1ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 2536K, 53% free 12896K/27143K, paused 12ms D/dalvikvm( 9313): GC\_CONCURRENT freed 1K, 48% free 14158K/27143K, paused 1ms+1ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 2536K, 53% free 12896K/27143K, paused 11ms D/dalvikvm( 9313): GC\_CONCURRENT freed 1K, 48% free 14158K/27143K, paused 1ms+1ms D/dalvikvm( 9313): GC\_CONCURRENT freed 2341K, 51% free 13513K/27143K, paused 1ms+2ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 1503K, 53% free 12766K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 751K, 53% free 12766K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 751K, 53% free 12766K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 751K, 53% free 12766K/27143K, paused 13ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 751K, 53% free 12766K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 751K, 53% free 12766K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 751K, 53% free 12766K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 751K, 53% free 12766K/27143K, paused 11ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 751K, 53% free 12766K/27143K, paused 13ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 751K, 53% free 12766K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 1015K, 53% free 12767K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 1184K, 54% free 12663K/27143K, paused 13ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 998K, 54% free 12662K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 998K, 54% free 12663K/27143K, paused 12ms D/dalvikvm( 9313): GC\_FOR\_ALLOC freed 998K, 54% free 12663K/27143K, paused 13ms D/dalvikvm( 9313): GC\_CONCURRENT freed 1008K, 53% free 12832K/27143K, paused 1ms+2ms D/dalvikvm( 9313): GC\_CONCURRENT freed 1246K, 54% free 12737K/27143K, paused 1ms+3ms
Garbage collection is going crazy during scene changes. I’m not using storyboard for scene management. I handle the scene changes myself but don’t do any forced garbage collection during the change. I tried setting largeHeap = true but that didn’t help.
I’m using daily build 1191 but I’ve experienced this problem for a quite a while. I test/develop cycle mainly on iOS devices so I’ve put off dealing with this Android only issue, but I’m at a point where I need to fix it since I can’t ship with such huge pauses.
I saw a couple threads with similar issues that seemed due to old Widget bugs, plugin issues that have since been fixed, and rendering a lot of text objects (which I’m not doing much of and certainly not during the scene change).
Any ideas what could be going on, or experiences similar with solutions to try? The next thing I’m going to try is rewrite my scene change code to explicitly collect garbage and pause for 50ms prior to loading the next scene and see what it does.
EDIT: forcing a garbage collection after discarding the old scene and prior to loading the new scene didn’t fix the issue.
