I’m making a fast-paced realtime Android game, and everything works great, but the first couple of seconds when the game starts are very laggy because the garbage collector is cleaning up after the loading thread. Sure, the player could wait a few seconds (like 10+ sec) because after its done it starts running perfectly smooth, but that looks really ugly and feels like the game is buggy.
Is there a way (or technique) to tell when its safe to start the game so the garbage collector won’t start going crazy as soon as the real-time part begins? the big fat loading thread can’t be reduced much without breaking things.
This seems like a case where
System.gc()might help. It tells the system that this would be a good time to collect garbage. According to the documentation,The docs also say, though, that the method “suggests” that objects be collected — that is, there’s no guarantee it’ll help, particularly if you still have some references squirreled away. If it does work, it’ll only collect objects that are not reachable at all from the running code, including the runtime. (That loader thread, for example, is not eligible for collection til it’s finished running and your code has no more references to it.)