Your other choices are:
- Never GC via using object pools. This code is nastier than C++ because Java is not intended to be used this way.
- GC whenever needed randomly. The game will just pause occasionally. Very annoying as a player.
- Write the actual game in C++. Make a few JNI calls here and there. On feature phones I only remember this being possible for some vendor apps.